有没有办法检查一下?我正在使用.NET框架,并想了解更多关于如何防御CSRF攻击的知识。
发布于 2011-04-22 16:33:53
Referrer单独检查won't help you,它会困扰用户,所以最好不要依赖它。
ASP.NET可以通过the viewstate帮助你缓解CSRF:每个回发都必须包含视图状态,否则框架将引发异常,并且由于攻击者无法读取它(要读取视图状态,他必须获取页面,并且不允许跨站点AJAX请求),攻击将失败。
但是,作为V4Vendetta pointed out is not enough的视图状态:如果页面不包含具有每个用户唯一内容的控件,则不同用户的视图状态将是相同的,因此攻击者可以简单地提交他的视图状态。
为了防止这种情况,您可以将此代码放在您想要保护的每个页面中:
protected void Page_Init(Object sender, EventArgs e)
{
this.ViewStateUserKey = this.Session.SessionID;
}设置Page.ViewStateUserKey将为每个用户创建一个唯一的视图状态,从而使复制/粘贴失败。或者,您可以使用像this这样的专用模块。
发布于 2011-04-22 16:25:27
你可以检查和拒绝第三方站点对你站点的“控制器”部分的请求(这实际上是在数据库中进行更改)。
您还必须允许空的引用,因为有些防火墙和浏览器根本不发送它们。但它是必须要有保护的。
在c#中,您可以通过以下方式访问它:
MyReferrer = Request.UrlReferrer.ToString();发布于 2011-04-22 16:33:58
我希望这能帮助你处理/理解
Read this
它告诉附加一个加密强随机值并将其设置为用户机器上的cookie,并包括与表单值和cookie值相同的值。这将会有帮助。(所以似乎可以有效地使用它)
https://stackoverflow.com/questions/5753604
复制相似问题