2011-05-01 51 views
2

我已经安装了AntiCSRF HTTPModule,但我需要将它与ajax一起使用。
令牌字段名称:的RaiseException。
CookieName:__CSRFCOOKIE。
我应该使用Ajax POST手动发送令牌字段值或有别的事要做?
由于我们在这里使用cookie,任何人都不能创建具有相同名称和相同值的cookie,并将隐藏字段中显示的值发送到服务器并获取数据,或者对此有一些限制? !
谢谢与ajax一起使用AntiCSRF

+0

任何人,任何事!? – 2011-05-02 13:05:44

回答

0

我不熟悉您使用的特定反CSRF模块。 ASP.Net中内置了反CSRF支持,但它与AJAX相斗争。

大多数网站使用安全的仅HTTP cookie进行身份验证。所有的浏览器支持同源策略这意味着只有创建Cookie的网站可以访问它。

CSRF攻击是有效的,因为黑客无需查看cookie,因为用户的浏览器会将它们连同任何请求一起发送到您的网站。因此,黑客创建了将数据发送到你的网站上的表单:

<form action="yoursite.com/userAdmin/Create"> 
    <input type="text" name="username" value="hackerUser" /> 
    <input type="text" name="rights" value="godlike" /> 
    ... 
</form> 

黑客是不是在您的网站管理员,但他们可以欺骗谁把做的东西为他们的用户。

大多数反CSRF保护工作方式相同:通过要求POST-ed表单数据具有网站可以访问的额外令牌,但黑客无法恶搞。

因此.Net的默认实现添加一个带有令牌的cookie,隐藏输入中的相同标记,然后检查它们是否匹配。黑客无法看到cookie,所以无法重现隐藏的输入。

这是问题的AJAX调用的原因有两个:

  • 净生成令牌作为隐藏输入标签,这意味着一些JavaScript是需要获取到AJAX调用。
  • 净兑令牌检查假定它是一个表单输入,这意味着JSON调用传递它的格式不正确。

这听起来像你需要做的是手动添加令牌的字段名称的值到AJAX调用,并确保您发送表单数据。

相关问题