![]() | 1 sky101001 2016-10-07 09:54:18 +08:00 via iPad ![]() 我觉得可以先验证下用户的输入,确认是个 url 后直接 img src={{}} |
![]() | 2 ericls 2016-10-07 10:02:32 +08:00 ![]() 推荐用 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 ![]() |
![]() | 6 |
![]() | 7 ibigbug 2016-10-08 03:39:28 +08:00 ![]() @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 ![]() 这个得具体看了,你试试把默认 escape 关掉? |
![]() | 11 makeitall OP @ibigbug 关掉测试了一遍,发现|e 加了之后自动全部转义,即便|sinaimg 在|e 后面也被转义了。。。说好的管道符呢。。。。 |