如何在Django中发出安全的URL?

时间:2019-01-15 00:45:05

标签: python html django url escaping

在Django模板中考虑以下代码:

p4 client -i

<a href='{{target}}'>Link text</a>

如果上下文项<a href="{{target}}">Link text</a> 包含引号或双引号字符(target'),那么我希望HTML页面至少能折断。或者有人可以在关闭引号/双引号后插入JavaScript,以便在客户端计算机上运行任意代码。

在这种情况下如何转义网址?

我尝试过

"

但是这种方法的问题在于,URL停止通向诸如<a href='{{target|urlencode}}'>Link text</a> 之类的原始站点,但开始通向http://www.example.com作为域名后路径的http://www.example.com引导我的站点,即http://127.0.0.1:8000/http%3A//www.example.com

那么您能告诉我使URL安全的正确方法吗?

更新:我刚刚意识到我的示例过于简化。如果更详细的话,这是我使用上下文项的方式:

<a href="javascript:{}"
    onclick="return recordTarget({{ target.perm_id }}, '{{ target.link }}')">
    {{ target.title }}</a>

所以我已经在HTML中使用单引号和双引号。 target.link作为字符串传递给JavaScript函数。

在URL包含单引号或双引号的情况下,如何更改代码的安全性和有效性?

0 个答案:

没有答案