Django HttpResponseRedirect 是否遭受 xss 攻击?

does Django HttpResponseRedirect suffer from xss attack?

如题,因为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,)))

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

只要您没有使用 mark_safe() 方法 (reference) 或 safe 模板标签 (<span id="search-query" >You searched for {{ query | safe }}</span>),您应该不会受到 XSS 攻击等。 ,因为 Django 会自动转义危险字符串。

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

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