首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是HTTP Referer报头?

什么是HTTP Referer报头?
EN

Stack Overflow用户
提问于 2011-04-22 16:22:32
回答 3查看 1.2K关注 0票数 1

有没有办法检查一下?我正在使用.NET框架,并想了解更多关于如何防御CSRF攻击的知识。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-22 16:33:53

Referrer单独检查won't help you,它会困扰用户,所以最好不要依赖它。

ASP.NET可以通过the viewstate帮助你缓解CSRF:每个回发都必须包含视图状态,否则框架将引发异常,并且由于攻击者无法读取它(要读取视图状态,他必须获取页面,并且不允许跨站点AJAX请求),攻击将失败。

但是,作为V4Vendetta pointed out is not enough的视图状态:如果页面不包含具有每个用户唯一内容的控件,则不同用户的视图状态将是相同的,因此攻击者可以简单地提交他的视图状态。

为了防止这种情况,您可以将此代码放在您想要保护的每个页面中:

代码语言:javascript
复制
protected void Page_Init(Object sender, EventArgs e)
{
    this.ViewStateUserKey = this.Session.SessionID;
}

设置Page.ViewStateUserKey将为每个用户创建一个唯一的视图状态,从而使复制/粘贴失败。或者,您可以使用像this这样的专用模块。

票数 1
EN

Stack Overflow用户

发布于 2011-04-22 16:25:27

你可以检查和拒绝第三方站点对你站点的“控制器”部分的请求(这实际上是在数据库中进行更改)。

您还必须允许空的引用,因为有些防火墙和浏览器根本不发送它们。但它是必须要有保护的。

在c#中,您可以通过以下方式访问它:

代码语言:javascript
复制
MyReferrer = Request.UrlReferrer.ToString();
票数 3
EN

Stack Overflow用户

发布于 2011-04-22 16:33:58

我希望这能帮助你处理/理解

Read this

它告诉附加一个加密强随机值并将其设置为用户机器上的cookie,并包括与表单值和cookie值相同的值。这将会有帮助。(所以似乎可以有效地使用它)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5753604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档