Nad*_*lic 23 csrf antiforgerytoken
我正在努力保护CSRF并且有两个风尚:
任何人都可以解释原因吗?
Tre*_*vor 71
这是一个关于CSRF的好教程:
以下是一般要点:您已登录银行网站.您的银行会在您的计算机上放置一个cookie,以便它可以验证您的身份.每当您向yourbank.com发出请求(即加载页面)时,浏览器都会将cookie发送到Web服务器,Web服务器上的代码会检查cookie以确保您已通过身份验证.大.
然而,尽管Cookie尚未过期,您检查您的邮件,并从尼日利亚王子打开一封电子邮件,告诉你点击一个链接.你点击它(谁可以抗拒),而不是带你到王子描述的页面,链接带你到这个URL:
http://yourbank.com/transfer.aspx?amt=1000000&from=myAccount&to=princeAccount
因为您已经在您的银行(通过cookie)进行了身份验证,它认为您实际上是在要求转移资金,所以它会这样做.
这显然是一个人为的例子,但它得到了重点.更现实的是,该链接可能会提交一个请求,该请求会在您所属的论坛网站上更改您的电子邮件地址,以便他们可以访问它.
现在,回答您的具体问题:
解决此问题的一种方法(由Ruby和.NET及其他人使用)是包含一个防伪标记.基本上,当您请求页面时,服务器包含一个带有加密值的隐藏字段.当您提交表单时,网站会查看cookie以确保您已通过身份验证,但它也会查看浏览器发送的加密值并确保其有效.加密令牌实际上是您的帐户所关联的会话ID.因此,服务器会看到cookie,将您标识为用户123,然后检查加密的表单字段标记,解密该值并确保未加密的值与您的会话或用户ID或其他内容匹配.如果是,它就知道继续.
发给你链接的尼日利亚王子不会知道你的会话ID是什么,即使他这样做了,他也无法使用网站使用的相同密钥和算法加密它.
你有它.一次阻止尼日利亚王子一个反伪造令牌.
(这里没有任何针对尼日利亚人或尼日利亚人的人.我相信他们是可爱的人.只是他们的王子有时表现得有点糟糕.):)
出于安全原因,您无法使用AJAX从其他域检索内容.
因此,其他网站无法获取您的令牌.
| 归档时间: |
|
| 查看次数: |
13489 次 |
| 最近记录: |