【问题标题】:does Django HttpResponseRedirect suffer from xss attack?Django HttpResponseRedirect 是否遭受 xss 攻击?
【发布时间】:2022-01-20 11:19:09
【问题描述】:

作为标题,由于urlpatterns设置了数字参数,我倾向于认为HttpResponseRedirect不会受到xss攻击,对吗?

如果不是,HttpResponseRedirect 是如何受到影响的?

urls.py

from django.urls import path
from hello import views

app_name = 'hello'
urlpatterns = [
    path("", views.home, name="home"),
    # ex: /hello/5/
    path('<int:question_id>/', views.detail, name='detail'),
    path('<int:question_id>/results/', views.results, name='results'),
]

views.py

def detail(request, question_id):
    return HttpResponseRedirect(reverse('hello:results', args=(question.id,)))

【问题讨论】:

    标签: python django security xss checkmarx


    【解决方案1】:

    Django 通常是默认安全的框架,这意味着它不应该受到最常见的攻击(例如 XSS、SQLi 等)的攻击。

    只要你不使用mark_safe() 方法(reference) 或safe 模板标签(&lt;span id="search-query" &gt;You searched for {{ query | safe }}&lt;/span&gt;) 你应该可以免受XSS 攻击等,因为Django 会自动转义危险的字符串。

    在您的特殊情况下,XSS 是不可能的,因为您的 URL 仅接受整数(据我了解,它仅在浏览器中显示问题的 ID)。

    综上所述,对于 Django 中的 XSS,您必须使用 {{ something | safe }} 模板标签,并将带有恶意 XSS 负载的字符串加载到 HTML 模板中。

    【讨论】:

    • 感谢您的回答。如果我们的 URL 不是仅整数情况,是否有可能遭受 xss 的影响?
    • 正如我所说,如果您在 Django 中对用户提供的数据不使用 mark_safe() 方法或 safe 模板标签,那么您的应用程序通常不会受到 XSS 的影响。当然,从来没有100%的保证,但是我已经很久没有在Django中看到过XSS了。您可以引入额外的保护,例如内容安全策略或 X-XSS-Protection 标头。您也可以使用 DOMPurify - 通过所有这些措施,XSS 的机会接近 0。如果您觉得我的回答有帮助,请投票 :)
    猜你喜欢
    • 2015-12-31
    • 2016-04-29
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多