#1 - 2017-5-5 15:36
chitanda@Lv1 (啊哈哈,阿卡琳希腊奶~)
小问题。其实我也不知道是谁的锅。
code标签内有[mask]的的时候,被回复引用后会导致mask标签效果生效而不是原本的文本格式
姑且贴个图:
#2 - 2017-5-5 18:02
(Death is the gateway to Eternity, my dear.)
似乎是因为
引用和
code

嵌套不能?
#2-1 - 2017-5-5 18:02
LunarShaddow
看来是可以嵌套的,不知道为啥引用了就扒了……
#2-2 - 2017-5-5 18:04
LunarShaddow
[mask]test[/mask]
#2-3 - 2017-5-5 18:06
chitanda@Lv1
LunarShaddow 说:
[mask]test[/mask]
然后一回复就黑了。。
#2-4 - 2017-5-5 18:08
LunarShaddow
LunarShaddow 说:
测试黑屏
#2-5 - 2017-5-5 18:09
LunarShaddow
chitanda 说: 然后一回复就黑了。。
看来quote会踢掉quote部分
#2-6 - 2017-5-5 18:16
chitanda@Lv1
LunarShaddow 说: 看来quote会踢掉quote部分
#2-3我手动构造了一下你的回复,结果code里的mask并没有黑。。
#3 - 2017-5-5 18:17
(啊哈哈,阿卡琳希腊奶~)
[mask]test11[/mask]
#3-1 - 2017-5-5 18:17
chitanda@Lv1
[mask]test2[/mask]
#3-2 - 2017-5-5 18:18
chitanda@Lv1
chitanda 说:
 [mask]test2[/mask]
test3
#3-3 - 2017-5-5 18:19
chitanda@Lv1
chitanda 说: test2
test4
#4 - 2017-5-5 18:21
(啊哈哈,阿卡琳希腊奶~)
发现问题所在了。
#3-2是我手动构造的回复,#3-3是回复后系统自动生成的,编辑的时候可以看到#3-3的回复里的[code]没了
代码如图:
#4-1 - 2017-5-5 18:24
LunarShaddow
于是你重复了我#2-1的结论,引用了就扒了……
#4-2 - 2017-5-5 18:26
chitanda@Lv1
LunarShaddow 说: 于是你重复了我#2-1的结论,引用了就扒了……
哦哦,前面没看懂你2-1的回复。。我重点只是放在前半句了= =
#4-3 - 2017-5-5 18:27
chitanda@Lv1
LunarShaddow 说: 于是你重复了我#2-1的结论,引用了就扒了……
发现你回复早了,结果我这层没编辑完就不能改了(bgm38)
#4-4 - 2017-5-5 18:27
LunarShaddow
chitanda 说: 发现你回复早了,结果我这层没编辑完就不能改了
再开一层吧……
#4-5 - 2017-5-5 18:29
chitanda@Lv1
LunarShaddow 说: 再开一层吧……
没事,其实就是加了个3-2的代码截图顺带卖了个萌。结果没卖出去。BGM歧视大龄肥宅(bgm38)
#5 - 2017-5-5 18:44
(✨️VIP 8✨️)
这个不算问题,quote仅引用纯文本忽略BBCode,而你用code包围的部分被视为纯文本。
#5-1 - 2017-5-5 18:55
chitanda@Lv1
然而这样quote的实际表现方式和用户期待的展现方式有区别了。而且事实上quote内也并没有真的完全忽略BBCode。。倒不如说只有code被忽略了
#5-2 - 2017-5-5 19:09
林卯
chitanda 说: 然而这样quote的实际表现方式和用户期待的展现方式有区别了。而且事实上quote内也并没有真的完全忽略BBCode。。倒不如说只有code被忽略了
你钻到牛角尖里出不来了…
回复时仅引用纯文本,然后用quote括起来。这一步有问题吗?
用code包围的BBCode由于是“code”不解析,当作纯文本被引用。这一步有问题吗?
而被用quote括起来的BBCode由于没有被code包围所以就被解析生效。这一步有问题吗?

只有code被忽略?如果我告诉你我可以构造一个code不被忽略的回复呢。
#5-3 - 2017-5-5 19:14
林卯
[code]hello world![/code][code]hello world again[/code]
实际上用这个方法可以影响回复你的人的引用内容。
#5-4 - 2017-5-5 19:16
chitanda@Lv1
林卯 说: 你钻到牛角尖里出不来了…
回复时仅引用纯文本,然后用quote括起来。这一步有问题吗?
用code包围的BBCode由于是“code”不解析,当作纯文本被引用。这一步有问题吗?
而被用quote括起来...
“回复时仅引用纯文本,然后用quote括起来。这一步有问题吗?”
你这个论点就是的。看到这个加粗的“错”字了么?他并没有被视作纯文本。所以一样是bbcode里的内容,为什么
[b]
不忽略而
[code]
要被忽略?
而且可以构造一个code不被忽略的回复不就正好说明你前面这个论点站不住。实际上quote的内容并没有忽略哪个特定BBCode标签的设定,code被忽略是个bug
#5-5 - 2017-5-5 19:29
林卯
chitanda 说: “回复时仅引用纯文本,然后用quote括起来。这一步有问题吗?”
你这个论点就是错的。看到这个加粗的“错”字了么?他并没有被视作纯文本。所以一样是bbcode里的内容,为什么不忽略而[code]...
什么?b不忽略是什么鬼?这个帖子里哪个b是没被忽略的?具体一点:这个帖子里哪个被系统自动引用而非手工构造的b是没被忽略的?你想表达什么?昵称也是帖子的一部分?“chitanda 说: ”这个加粗的是引用的内容?
上面这句话是用b加粗的,回复一下试试。
#5-6 - 2017-5-5 19:30
chitanda@Lv1
林卯 说: 什么?b不忽略是什么鬼?这个帖子里哪个b是没被忽略的?具体一点:这个帖子里哪个被系统自动引用而非手工构造的b是没被忽略的?你想表达什么?昵称也是帖子的一部分?“chitanda 说: ”这个加粗的是引...
回复
#5-7 - 2017-5-5 19:33
chitanda@Lv1
林卯 说: 什么?b不忽略是什么鬼?这个帖子里哪个b是没被忽略的?具体一点:这个帖子里哪个被系统自动引用而非手工构造的b是没被忽略的?你想表达什么?昵称也是帖子的一部分?“chitanda 说: ”这个加粗的是引...
OK,#5-7倒是能说明我前面认知有问题了。
BGM的回复系统确实是这么“回复时仅引用纯文本,然后用quote括起来”设定的。
那我现在能认为这个设定本身有问题了么?
既然用户可以自行构造一个完全符合BBCode使用规则并正常显示出来的回复,为什么系统自动设置的回复要过滤掉全部的BBCode?
#5-8 - 2017-5-5 19:51
Donuts
chitanda 说: OK,#5-7倒是能说明我前面认知有问题了。
BGM的回复系统确实是这么“回复时仅引用纯文本,然后用quote括起来”设定的。
那我现在能认为这个设定本身有问题了么?
既然用户可以自行构造一个完全符合...
回复引用是前端完成的,bbcode转html是后端完成的,你在前端拿不到别人写的bbcode,只能拿到html。回复引用过滤的实际上是html标签
#5-9 - 2017-5-5 19:57
林卯
chitanda 说: 回复
可以测试回一下#5-3,我试着搞了个彩蛋。
#5-10 - 2017-5-5 20:00
君寻
林卯 说:
hello world!
hello world again

实际上用这个方法可以影响回复你的人的引用内容。
这里可以用[span]吗?怎么用?
#5-11 - 2017-5-5 20:01
chitanda@Lv1
Donuts 说: 因为回复引用是前端完成的,bbcode转html是后端完成的,你在前端拿不到别人写的bbcode,只能拿到html
OK。如此真诚不做作(bgm38)
然而我还是很好奇虽然前端确实拿不到bbcode,但是后端完全可以获得被引用的回复的bbcode代码吧?按理说后端处理下返回应该也是没问题的。。
不过就当这是技术限制吧,毕竟需求也有个轻重缓急(bgm38)
#5-12 - 2017-5-5 20:06
chitanda@Lv1
林卯 说:
hello world!
hello world again

实际上用这个方法可以影响回复你的人的引用内容。
这个应该就是利用被引用会默认纯文本的方法提前埋了个bbcode解析后视觉不可见的内容吧。。我开始还以为是构造了个多重嵌套的= =
我也来弄一个试试看。。
#5-13 - 2017-5-5 20:21
chitanda@Lv1
君寻 说: hello world again
实际上用这个方法可以影响回复你的人的引用内容。这里可以用[span]吗?怎么用?
另一个[code]用bbcode里的[size]设置为0就可以了。。这样默认不显示,不过被引用后size=0失效,就出来了。不过我不知道哪些非现代浏览器能不能完美的体现这个size=0。貌似有些旧浏览器不会完全等于0
#5-14 - 2017-5-5 20:23
林卯
君寻 说: hello world again
实际上用这个方法可以影响回复你的人的引用内容。这里可以用[span]吗?怎么用?
我只是利用了引用会忽略BBCode这点:
[code[i][/i]][/code],[c[u][/u]ode][/code]…随便写。
#5-15 - 2017-5-5 20:32
Donuts
chitanda 说: OK。如此真诚不做作
然而我还是很好奇虽然前端确实拿不到bbcode,但是后端完全可以获得被引用的回复的bbcode代码吧?按理说后端处理下返回应该也是没问题的。。
不过就当这是技术限制吧,毕竟需求也...
其实这样也有好处

假设一个这样的时间流程:我回复“乖爷爷,快叫孙子”,你看到我写的内容,你开始写回复“孙子”,我edit我的回复内容为“你是我谁?”并保存,你写完回复“孙子”并发送

为了让你真正回复的对象内容是你当时浏览器看到的内容,只能前端先取好,一并保存。
如果让后端处理,你会发现辛辛苦苦写完,传给服务器,再传回来,要回复的对象内容已经变了。。
#5-16 - 2017-5-5 20:38
chitanda@Lv1
Donuts 说: 其实这样也有好处

假设一个这样的时间流程:我回复“乖爷爷,快叫孙子”,你看到我写的内容,你开始写回复“孙子”,我edit我的回复内容为“你是我谁?”并保存,你写完回复“孙子”并发送

为了让你真正回...
也对。。这个角度的话是能理解了。不过我刚刚看了下,事实上前端发回去的好像不是bbcode代码而是BBCode解析后的HTML?如果这样的话能不能前端直接取完整的HTML结构保存?TEST
#5-17 - 2017-5-5 21:41
Donuts
林卯 说: 我只是利用了引用会忽略BBCode这点:[code][/code],[code][code][/code]…随便写。
你这么一说我倒想出一种完全置换的玩法,如下
[size=0]苟利国家生死以[/size]岂因祸福避趋之
#5-18 - 2017-5-5 21:46
Donuts
chitanda 说: 也对。。这个角度的话是能理解了。不过我刚刚看了下,事实上前端发回去的好像不是bbcode代码而是BBCode解析后的HTML?如果这样的话能不能前端直接取完整的HTML结构保存?TEST
保存了html,就是准备把 html 原封不动的放回到网页上?这样不安全,会给XSS攻击提供机会。
#5-19 - 2017-5-5 21:53
LunarShaddow
林卯 说:
hello world!
hello world again

实际上用这个方法可以影响回复你的人的引用内容。
checking
#5-20 - 2017-5-5 21:53
LunarShaddow
Donuts 说: 你这么一说我倒想出一种完全置换的玩法,如下
苟利国家生死以岂因祸福避趋之
another checking
唉你们好厉害
#5-21 - 2017-5-5 22:03
chitanda@Lv1
Donuts 说: 保存了html,就是准备把 html 原封不动的放回到网页上?这样不安全,会给XSS攻击提供机会。
xss的话能过滤啊。。主要我看现在前端返回的不也是html内容吗(bgm38)还是我理解错了
#5-22 - 2017-5-5 22:07
Donuts
chitanda 说: xss的话能过滤啊。。主要我看现在前端返回的不也是html内容吗还是我理解错了
哦,这个意思,是我理解错了,刚才没测试有点想当然了
#5-23 - 2017-5-5 22:35
烈之斩
林卯 说:
hello world!
hello world again

实际上用这个方法可以影响回复你的人的引用内容。
ce shi
#5-24 - 2017-5-5 22:37
烈之斩
烈之斩 说: hello world again
实际上用这个方法可以影响回复你的人的引用内容。ce shi
how it works?
#5-25 - 2017-5-5 23:09
chitanda@Lv1
烈之斩 说: how it works?
#5-14有解释。因为引用会使bbcode失效所以可以提前构造好一个看起来无效的code标签,等到被引用后里面的bbcode都被过滤了,之前无效的code就生效了。第二个句子隐藏了应该是利用了size=0
大概的一个源代码:
https://pastebin.com/8a7bBAzB