我想接受用户输入的网址并将其显示在链接标记的 href
属性部分中。即。
<a href="%(user_input)s">My link name</a>
但我想确保它没有任何恶意内容,例如注入(inject)脚本标签等。清理 user_input
部分的最佳方法是什么?
据我所知:
django.utils.html.escape
会转义&
,这是不好的。django.utils.http.urlquote
和django.utils.http.urlquote_plus
会转义http: 的
还有其他看起来很糟糕的事情。:
部分//
也许最好的方法是urlquote_plus
并指定一些安全字符?
最佳答案
您可以使用模板标签:safe。
假设您的帖子上下文变量是:
user_input = some_valid_url
抓取 user_input,并添加 html 以使其成为链接,并在保存帖子时重新插入它。所以保存的帖子是:
link_text = <a href=user_input>Link</a>
然后在 html 模板中使用 safe:
{{ link_text|safe }}
以下是安全模板标签的文档链接: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#safe
关于python - 清理用户输入以包含在 href 属性中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25314175/