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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用防伪令牌攻击后期数据相关的知识,希望对你有一定的参考价值。

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

提交以下信息的帖子请求

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

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

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

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

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

答案

这里有很多东西。混乱是围绕着不同保护的目的,所以让我试着直截了当。

CSRF, and antiforgerytoken

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

如果使用例如antiforgerytoken,则会阻止这种情况,因为malicious.com将无法将正确的令牌发送到victim.com,因此请求将被拒绝。

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

Integrity of requests

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

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

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

以上是关于如何使用防伪令牌攻击后期数据的主要内容,如果未能解决你的问题,请参考以下文章

登录页面上是不是需要防伪令牌?

Asp.net Mvc:Jquery post 数组 + 防伪令牌

CSRF在小丑中使用防伪标记

使用防伪令牌将 JSON 模型发布到 ASP.Net MVC3

如果我在一个页面中添加多个表单,是不是需要在每个表单中添加单独的防伪令牌?

令牌如何防止csrf攻击?