1
sky101001 2016-10-07 09:54:18 +08:00 via iPad 1
我觉得可以先验证下用户的输入,确认是个 url 后直接 img src={{}}
|
2
ericls 2016-10-07 10:02:32 +08:00 1
推荐用 pyquery 这类专门操作 dom 的东西 来操作 dom
最后 再用 白名单过一次就好了 |
3
cheetah 2016-10-07 10:40:25 +08:00 via iPhone
为什么要 | safe ?
|
4
ibigbug 2016-10-07 17:37:48 +08:00 1
|
6
makeitall OP @ibigbug 对 tornado 不太熟,这个是在哪里能引用这个函数,还有就是 html escape 在那里?
|
7
ibigbug 2016-10-08 03:39:28 +08:00 1
@makeitall 跟 jinja 的 filter 同样原理。 https://github.com/livid/v2ex/blob/c8af57e2d2c4c8701901fb346cc98a4cde13b54b/tpl/portion/topic_content.html#L1 在这里有引用到,也有 escape ,不过跟图片地址转换无关。
你为什么要问这个 escape 呢? |
9
makeitall OP @ibigbug 还有一个问题,我用{{ content | sinaimg }}的时候发现 html 代码都被 escape 了,然后我加入了一个 e ,{{ content | e | sinaimg }}发现还是全被 escape 了。请问这两个为什么不是后面的 sinaimg 不被 escape 呢?然后我现在的解决办法是只能自定义一个 escape 然后加 safe{{ content | newescape | sinaimg | safe }},然后才能保证用户输入 html 代码的时候能够被 escape 掉。感觉这样很麻烦,有没有更好的办法?
|
10
ibigbug 2016-10-08 13:15:46 +08:00 via iPhone 1
这个得具体看了,你试试把默认 escape 关掉?
|
11
makeitall OP @ibigbug 关掉测试了一遍,发现|e 加了之后自动全部转义,即便|sinaimg 在|e 后面也被转义了。。。说好的管道符呢。。。囧。
|