在Django 3.0 发行说明中,此评论是关于url_has_allowed_host_and_scheme
:
为了避免对有效范围的混淆,私有内部实用程序
is_safe_url()
被重命名为url_has_allowed_host_and_scheme()
. URL 具有允许的主机和方案通常并不意味着它是“安全的”。例如,它仍然可能被错误地引用。确保也在iri_to_uri()
不受信任的 URL 的路径组件上使用。
我明白这样做的目的url_has_allowed_host_and_scheme
是什么。以提供next
查询参数的常见用例为例,例如:http://example.com/foobar?next=http%3A%2F%2Fexample2.com%2Fhello。您可以对处理此路径的视图进行编程,以重定向到next
参数提供的 URL,在本例中为:
http ://example2.com/hello 。如果 URL 未经过验证,则这是一个“开放重定向”漏洞。恶意行为者可以利用开放重定向将恶意 URL 隐藏在看起来值得信赖的 URL 后面。
您可以使用它url_has_allowed_host_and_scheme
来确保 URL 具有预期的主机名和方案。
我的问题是关于iri_to_uri
. 该文档暗示您还需要使用此功能。我什么时候需要使用它?