忘记密码和用户验证码有主机标头漏洞。
攻击者可以从服务器(包括他自己的域)生成用户验证和密码重置请求。
他们是更好的出路吗?
答案 0 :(得分:1)
好吧,正如问题所述,>>> 'hi\xFF'.encode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 2: ordinal not in range(128)
标头应由服务器而不是请求对象设置。
在这种情况下,您可以拥有一个虚拟主机(vhost),它将捕获使用无法识别的主机名的任何请求。实施方式因网络服务器而异,但您可以在Nginx和Apache上查看有关如何处理此问题的链接。
有关主机标头攻击的更多信息,请访问here。
答案 1 :(得分:0)
我认为问题解决方案是一种多重安全方法。
Apache充当守门员。如果配置正确,可以限制路由到应用程序的匿名主机头。 (仍然不确定缓存注入)
虽然在线匿名域主机标头可能不会对https场景中的应用程序造成任何威胁。
但忘记密码电子邮件重置请求等脱机请求确实存在很大威胁。因为恶意攻击者可以请求忘记密码电子邮件重置匿名域主机头。然后,如果实际用户单击密码重置链接。邪恶的攻击者将获得重置代码。
现在,应用程序依赖于Apache路由的主机头来创建离线响应。这不应该发生(apache应该对在线流量负责)。因此,应用程序应该有自己的域名配置机制和创建脱机响应。