类似于 github 和 V 站的 markdown 使用场景
目前情况:前后端都是使用 marked 做解释器。
比如下面这个 markdown 文件。
# title
<a href="#" onclick="do sth...">link</a>
<script>
do sth...
</script>
```
<script>
do sth...
</script>
```
被解释的时候不管是 a 标签内的 onclick 还是 script 标签内的 js ,都会被插入到 html 里。
还是这个文件,放 github 的编辑器里测试了下,前两者都不会被插入到 html 里,而```内的不受影响
看了下貌似是因为 github 的做法是只支持部分语法,并不是支持所有 html 标签( V 站貌似也是这样的)。
script
标签。 但是对于绑定的事件无效。过年这几天貌似冒泡的都不多 (忧桑...)
求不沉 T^T
1
virusdefender 2016-02-10 23:22:28 +08:00
前端生成的时候我觉得不需要过滤,因为这是 self xss ,不影响别人。
后端过滤的时候讲 ``` 里面的全部转义,外面的过滤标签和属性。 |
2
skydiver 2016-02-10 23:27:23 +08:00 via iPad
@virusdefender 怎么会不影响别人?写的人和看的人不一定是一个人吧
|
3
virusdefender 2016-02-10 23:33:18 +08:00
@skydiver 你说的就是可以多人编辑的,我理解错了。那前端预览和后端渲染的时候都过滤 html 就好了。
|
4
virusdefender 2016-02-10 23:34:57 +08:00
|
5
techmoe 2016-02-10 23:35:25 +08:00 via Android
后端过滤相应 html 标签呗
|
6
chemzqm 2016-02-11 00:31:42 +08:00
简单点,除了代码块里面的标签都过滤掉
|
7
ericls 2016-02-11 03:25:45 +08:00 via iPhone
标签白名单
|
8
14ly 2016-02-11 03:28:49 +08:00 via iPhone
把 dom 弄出来,内容用 innerText 搞
|
9
Andy1999 2016-02-11 04:50:56 +08:00 via iPhone
简单点 不允许 html 标签
|
10
hxsf OP |
11
virusdefender 2016-02-11 10:11:12 +08:00
@hxsf 看我上面发的链接
|
12
zsx 2016-02-11 12:10:17 +08:00
https://github.com/leizongmin/js-xss 我也晒一个 xss 过滤库
主要是 tagName 和 attr 都要有白名单限制,针对 href/src 还要特别限制路径, style 对 css 属性也要进行单独过滤,若考虑到 IE 的话还要研究 expression 表达式的过滤。 |
14
wizardforcel 2016-02-11 13:41:19 +08:00 via Android
还是白名单吧。 html5 又新加进来一大堆事件。。。
|