【发布时间】:2014-08-14 17:36:32
【问题描述】:
我想接受用户输入的网址并将其显示在链接标签的href 属性部分。即。
<a href="%(user_input)s">My link name</a>
但我想确保它没有任何恶意内容,例如注入脚本标签等。对user_input 部分进行消毒的最佳方法是什么?
据我所知:
-
django.utils.html.escape会逃脱&,这很糟糕。 -
django.utils.http.urlquote和django.utils.http.urlquote_plus会避开:的一部分http://以及其他看起来很糟糕的事情。
也许最好的方法是urlquote_plus 指定一些安全字符?
【问题讨论】:
-
用户输入的本质是什么?通常,最好将用户可以输入的内容限制为一种简单的语言(例如“整数”或“单个单词”),而不仅仅是让用户输入是任何可能的字符串。如果它必须是任意字符串,您能否解释一下为什么要将用户的字符串变成这样的链接的一部分?它就像一个锚参考吗?
-
@FrobberOfBits - 感谢您的回复。它来自网站的一部分,用户可以在其中添加自己的链接,这些链接应该与页面上描述的位置相关。不过,我很想确保它不是攻击的途径。
标签: python django url escaping