- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
该示例来自 Python Django 框架,但适用于所有 Web 应用程序。 ALLOWED_HOSTS
setting如何保护您的网站和用户,即如果ALLOWED_HOSTS
设置为"*"
,恶意用户将如何“毒害带有恶意主机链接的缓存和密码重置电子邮件”?
ALLOWED_HOSTS Default: [] (Empty list)
A list of strings representing the host/domain names that this Django site can serve. This is a security measure to prevent an attacker from poisoning caches and password reset emails with links to malicious hosts by submitting requests with a fake HTTP Host header, which is possible even under many seemingly-safe web server configurations.
Values in this list can be fully qualified names (e.g. 'www.example.com'), in which case they will be matched against the request’s Host header exactly (case-insensitive, not including port). A value beginning with a period can be used as a subdomain wildcard: '.example.com' will match example.com, www.example.com, and any other subdomain of example.com. A value of '*' will match anything; in this case you are responsible to provide your own validation of the Host header (perhaps in a middleware; if so this middleware must be listed first in MIDDLEWARE_CLASSES).
最佳答案
how would a malicious user go about "poisoning caches and password reset emails with links to malicious hosts"?
缓存系统应该缓存通过特定host header发送的请求的响应。以便识别 URL。例如,如果有一个对 /foo
的 GET 请求,缓存只会在检查了主机 header (而不是简单的目标 IP)。如果输出页面包含反射的主机名和主机,则将 ALLOWED_HOSTS
设置保留为 "*"
您将允许此缓存被垃圾填满(即中毒) header 未由缓存层或服务器检查。
例如如果您网站上的页面输出
<script src="//[hostname]/script.js"></script>
如果攻击者将 attacker-site.co.uk
指向您的服务器并请求该页面,您的服务器将响应:
<script src="//attacker-site.co.uk/script.js"></script>
因此,用户和您的网站 (example.com) 之间的任何缓存层(例如 CDN)都会对受到先前注入(inject)的主机 header 污染的页面产生合法请求:
<script src="//attacker-site.co.uk/script.js"></script>
这使得攻击者可以在您的域上运行恶意 JavaScript,从而破坏同源策略。例如,他们可能安装了一个 JavaScript 键盘记录器来获取密码,或者安装了一个脚本来发送 DOM 内容。
此外,如果主机名未正确输出编码,则即使页面上不存在外部 JavaScript 标签,也可以直接使用它来注入(inject)脚本。
" /><script>alert('xss')</script>
将渲染:
<img src="//[hostname]/img.jpg" />
作为
<img src="//" /><script>alert('xss')</script>/img.jpg" />
密码重置电子邮件是类似的概念。假设密码重置电子邮件的模板是:
您请求重置密码。请前往 https://[HOST]/reset?token=[TOKEN] 进行重置。
攻击者将其域名 www.evil.com
指向您的服务器并请求用户重置。他们的 DNS 设置可以简单地为自己设置,使用主机文件。
然后用户将收到一封电子邮件,内容为
您请求重置密码。请访问 https://www.evil.com/reset?token=XYZ 进行重置。
单击链接后,由于 www.evil.com
的公共(public) DNS 指向攻击者的站点,攻击者将获得密码重置 token 并获得对该帐户的访问权限。
See this link有关此类攻击的更多详细信息。
关于security - ALLOWED_HOSTS 正在防御什么漏洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25018250/
我正在 node.js 中开发一个项目,该项目使用 mongoose 来处理 MongoDB。我想防御 XSS 攻击。建议的方法是什么?我找到了这个: https://www.npmjs.com/pa
如果某些 .html 文件只能通过密码匹配(在 PHP 中实现)与数据库中的哈希码来访问,用户仍然可以猜测可能的 .html 文件名并看到所谓的特权页面。查看特权页面的源代码,然后用户可以看到在该 .
问题 我们需要防御 Java 应用程序中的“WAITFOR DELAY”sql 注入(inject)攻击。 背景 [这很长。跳至“解决方案?”如果您很着急,请参阅下面的部分] 我们的应用程序在访问数据
我正在使用backbone和node.js创建一个网站,并且不认为默认情况下有任何针对CSRF的保护。在使用 Node.js 和 Backbone 时,是否有针对 CSRF 的标准方法?谢谢 最佳答案
我是一名优秀的程序员,十分优秀!