Django有效的XSS攻击示例

时间:2013-11-17 02:04:35

标签: django xss cross-site

我发现Django处理XSS攻击非常强大,我只是在模板上写了一个简单的文本字段,xss_form.html:

<html>
<head><title>XSS Forms</title></head>
<body>
<form action="" method="get"> 
    <input type="text" name="q">
    <input type="submit" value="Submit">
</form>

{% if query %}
    Query: {{query}} <br/>
{% endif %}
</body>
</html>

在view.py中:

def xss1(request):
    if 'q' in request.GET:
        q = request.GET['q'] 
        return render(request, 'xss_form.html', {'query': q})
    return render(request, 'xss_form.html')

那么每个人都知道在文本框中输入一些脚本,可以让浏览器弹出一个警告框吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您仍有问题,请查看:https://docs.djangoproject.com/en/dev/topics/templates/#automatic-html-escaping
Django应该自动转义html代码,除非你告诉不要这样做。

答案 1 :(得分:0)

您可以使用以下GET请求:

Something <script>alert("This is not secure")</script>

您只需要修改xss_form.html:
查询:{{query}} ----&gt;查询:{{query | safe}}
应该看起来

<html>
<head><title>XSS Forms</title></head>
<body>
<form action="" method="get"> 
    <input type="text" name="q">
    <input type="submit" value="Submit">
</form>

{% if query %}
    Query: {{query|safe}} <br/>
{% endif %}
</body>
</html>