为了防止跨站点请求伪造的危险情况,需要对http协议规范和浏览器行为进行哪些更改?
我不是在寻找如何修补我自己的网络应用程序的建议。有数百万易受攻击的web应用程序和表单。更改http和/或浏览器会更容易。
如果您同意我的前提,请告诉我需要对http和/或浏览器行为进行哪些更改。这不是一个寻找最佳答案的比赛,我想收集所有的好答案。
请阅读并评论我在下面的“答案”中的要点。

最佳答案

http规范的作者roy fielding不同意您的观点,即csrf是http中的一个缺陷,需要在那里修复。正如他在一篇reply in a thread named The HTTP Origin Header中写道的:
csrf不是web的安全问题。精心设计的网
服务应该能够接收任何主机发出的请求,
根据设计,在需要时进行适当的身份验证。如果浏览器
创建安全问题,因为它们允许脚本自动
使用存储的安全凭据将请求直接发送到第三方
站点,没有任何用户干预/配置,那么
修复程序在浏览器中。
事实上,csrf攻击从一开始就可能使用纯html。如今,javascript和css等技术的引入,只不过是引入了更多的攻击向量和技术,使得请求伪造变得更加容易和高效。
但它并没有改变这样一个事实:来自客户机的合法和可信的请求并不一定基于用户的意图。因为浏览器会一直自动发送请求(如图像、样式表等)并发送任何身份验证凭证。
同样,csrf攻击发生在浏览器内部,因此唯一可能的解决方法是在浏览器内部修复它。
但由于这并非完全可能(见上文),应用程序有责任实现一个方案,允许区分真实请求和伪造请求。总是传播的csrf令牌就是这样一种技术。而且,如果实施得当,并且受到其他攻击的保护(其中许多攻击也是由于现代技术的引入才有可能实现的),那么它就可以很好地工作。

09-30 14:27
查看更多