如何使用防伪令牌攻击后期数据

sam*_*iaj 6 c# asp.net-mvc csrf csrf-protection web

我知道ASP.NET MVC中的防伪令牌是如何工作的.但是仍然不清楚几个场景.我在下面提到的一个.

提交以下信息的帖子请求

  • cookie令牌(antiforgerytoken)
  • 表格数据(名字和姓氏)
  • 表单输入隐藏令牌(antiforgerytoken)

在到达服务器之前,黑客修改了表单数据(名字和姓氏),使标记信息保持不变.

在这种情况下,我们如何确保安全提交的数据无需任何修改即可到达服务器

实际上这个问题是由面试官提出的.我与同事讨论过,我也在谷歌搜索过.由于我无法找到清晰度,我想在这里问一下.

我不确定这是否是一个有效的问题.如果是的话,任何帮助将不胜感激

Gab*_*yel 5

这里混合了多种东西。混淆是围绕不同保护的目的,所以让我试着弄清楚。

CSRF 和防伪令牌

基本威胁如下。受害者用户登录到受害者网站victim.com。同时(比如在另一个浏览器选项卡中)他访问了一个恶意网站恶意网站恶意网站,该网站想要利用victim.com 中的CSRF。为此,恶意网站让用户将所需的参数发布到victim.com 以调用某个显然是受害者用户不想执行的功能。这是 CSRF 的基本情况,利用现有用户会话,恶意网站通过受害者用户在victim.com 上执行某些操作。

这是被阻止的,例如,如果使用 antiforgerytoken,因为恶意.com 将无法向victim.com 发送正确的令牌,因此请求将被拒绝。

请注意,这与合法的请求内容无关。

请求的完整性

一个不同的问题是确保收到的请求是发送的,即。数据是一样的。这通常是通过使用 HTTPS 来实现的,HTTPS 提供消息完整性和加密(等等)。因此,如果使用 HTTPS,则传输中的数据无法进行此类更改。

当然,如果攻击者控制客户端或服务器(更准确地说,TLS 端点,它并不总是服务器),即。TLS 通道之外的任何东西,那么攻击者就可以修改数据。但这意味着可以控制客户端。例如,如果您在客户端上运行本地代理(Fiddler、Burp、ZAP 代理等),您可以执行此操作 - 然后您可以更改请求中的任何数据,这就是渗透测试人员的工作方式。但是,没有这种控制级别的攻击者将无法做到这一点。

如果没有 HTTPS,请求(以及响应)完整性和加密是难以解决的问题。解决方案HTTPS。:)