|  |      1akfish      2014-06-10 07:24:39 +08:00 Markdown终于要来了? | 
|  |      2akfish      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 | 
|  |      3WildCat      2014-06-10 08:29:34 +08:00 via iPhone 赞一个,cnodejs.org似乎可以作为一个参考,它好像是在服务端做的处理。 解析时确实过滤掉一些危险的标签 | 
|  |      4jedyu      2014-06-10 08:34:36 +08:00 只用过marked ,收藏看大神解答 | 
|  |      6Actrace      2014-06-10 11:05:31 +08:00 markdown,我感觉没啥太大作用. 难道真的要把这个地方变成代码库? | 
|  |      7joyqi      2014-06-10 11:44:00 +08:00  3 首先pagedown完全没有对安全性做任何处理,它设计出来就是给前端自己写markdown时来preview的,没有人会无聊到自己xss自己吧。 但如果你要信赖它解析后的代码,并展现给所有人就会有很大的问题了。而且它还支持直接输入html代码,所以我的建议是在输出之前,用dom库载入它,把所有的元素撸一遍,去掉非法标签,比如script之类,去掉非法的属性比如onclick之类的。 | 
|  |      8chemzqm      2014-06-10 12:19:18 +08:00 简单做法就是后端过滤掉所有的html标签,干脆不支持html | 
|  |      9lm902      2014-06-10 13:16:52 +08:00 a href=javascript:这个也要去掉,还有form action=javascript:... | 
|  |      10soli      2014-06-10 13:42:35 +08:00 Markdown 终于要来了。。。 | 
|  |      11jakwings      2014-06-10 14:19:28 +08:00 | 
|  |      12zhangxiao      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 之类的 | 
|  |      14akfish      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、链接和图片而已。 不知道所谓“完全没做处理”是怎么来的。 | 
|  |      15ipconfiger      2014-06-10 16:44:07 +08:00 用标签白名单就好了 | 
|  |      16akfish      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)。 虽然我还是没用过,但我信口开河前还是会看下源代码的。 |