1
akfish 2014-06-10 07:24:39 +08:00
Markdown终于要来了?
|
2
akfish 2014-06-10 07:37:36 +08:00
Pagedown没用过,但Markdown的库一般都有sanitize的选项,会把一些HTML Tag按白名单过滤,避免XSS攻击。
大概看了下Pagedown sanitizer的实现 https://code.google.com/p/pagedown/source/browse/Markdown.Sanitizer.js 按文档说明用一般不会有什么安全性问题 https://code.google.com/p/pagedown/wiki/PageDown#Markdown.Sanitizer.js |
3
WildCat 2014-06-10 08:29:34 +08:00 via iPhone
赞一个,cnodejs.org似乎可以作为一个参考,它好像是在服务端做的处理。
解析时确实过滤掉一些危险的标签 |
4
jedyu 2014-06-10 08:34:36 +08:00
只用过marked ,收藏看大神解答
|
6
Actrace 2014-06-10 11:05:31 +08:00
markdown,我感觉没啥太大作用.
难道真的要把这个地方变成代码库? |
7
joyqi 2014-06-10 11:44:00 +08:00 3
首先pagedown完全没有对安全性做任何处理,它设计出来就是给前端自己写markdown时来preview的,没有人会无聊到自己xss自己吧。
但如果你要信赖它解析后的代码,并展现给所有人就会有很大的问题了。而且它还支持直接输入html代码,所以我的建议是在输出之前,用dom库载入它,把所有的元素撸一遍,去掉非法标签,比如script之类,去掉非法的属性比如onclick之类的。 |
8
chemzqm 2014-06-10 12:19:18 +08:00
简单做法就是后端过滤掉所有的html标签,干脆不支持html
|
9
lm902 2014-06-10 13:16:52 +08:00
a href=javascript:这个也要去掉,还有form action=javascript:...
|
10
soli 2014-06-10 13:42:35 +08:00
Markdown 终于要来了。。。
|
11
jakwings 2014-06-10 14:19:28 +08:00
|
12
zhangxiao 2014-06-10 14:36:30 +08:00
个人感觉markdown对v2ex来说还是可有可无的。
有一个比较复杂的办法,让v2支持github login,token里申请create gist的权限。然后用户贴代码的时候,直接去create一个gist,把地址贴回来。需要处理的是需要一个特殊的标签来表示code block。比如 gist: val a = 10 :gist 之类的 |
14
akfish 2014-06-10 16:38:06 +08:00
@joyqi No no no. 看源代码,只允许少数标签,你说的问题不存在:
https://code.google.com/p/pagedown/source/browse/Markdown.Sanitizer.js#23 基本上就只允许和Markdown功能等效的HTML Tag、链接和图片而已。 不知道所谓“完全没做处理”是怎么来的。 |
15
ipconfiger 2014-06-10 16:44:07 +08:00
用标签白名单就好了
|
16
akfish 2014-06-10 16:54:49 +08:00
好吧,看到楼上很多人就没看过文档/代码的样子,总结下吧:
Pagedown白名单的标签(见代码https://code.google.com/p/pagedown/source/browse/Markdown.Sanitizer.js#23): * b|blockquote|code|del|dd|dl|dt|em|h1|h2|h3|i|kbd|li|ol|p|pre|s|sup|sub|strong|strike|ul|br|hr * a(只允许有href和title属性,href只允许到http/https/ftp协议以及相对路径) * img(只允许src、width、height、title和alt属性,href只允许到http/https/ftp协议以及相对路径) Pagedown会尝试对标签进行配对,避免“没关门”的现象(见代码https://code.google.com/p/pagedown/source/browse/Markdown.Sanitizer.js#45)。 虽然我还是没用过,但我信口开河前还是会看下源代码的。 |