Asp.net 当用户告诉浏览器“HTTP”时,应该填写HTTP“u REFERER”吗;刷新;?

Asp.net 当用户告诉浏览器“HTTP”时,应该填写HTTP“u REFERER”吗;刷新;?,asp.net,internet-explorer,referrer,Asp.net,Internet Explorer,Referrer,我试图使用推荐人标题检查作为深度防御(即,许多安全技术中的一种,而注释仅依赖于任何一种) 有时MSIE似乎不包括刷新时的引用者。这是预期的行为吗?我是否可以检测到刷新,这样我就知道缺少推荐人是可以的 是的,我知道推荐人可以被自定义浏览器欺骗。只是说,如果黑客真的想入侵我的小网站,他需要投入时间来建立一个合适的推荐人。推荐人不是在书签点击或用户键入URL时设置的 在我看来,这也适用于刷新,因为否则,即使用户只点击了一次链接,然后多次点击F5,您也会从单个链接获得大量的传入流量 不过这只是我的意见。

我试图使用推荐人标题检查作为深度防御(即,许多安全技术中的一种,而注释仅依赖于任何一种)

有时MSIE似乎不包括刷新时的引用者。这是预期的行为吗?我是否可以检测到刷新,这样我就知道缺少推荐人是可以的


是的,我知道推荐人可以被自定义浏览器欺骗。只是说,如果黑客真的想入侵我的小网站,他需要投入时间来建立一个合适的推荐人。

推荐人不是在书签点击或用户键入URL时设置的

在我看来,这也适用于刷新,因为否则,即使用户只点击了一次链接,然后多次点击F5,您也会从单个链接获得大量的传入流量


不过这只是我的意见。这是一个非常不可靠的指标,它主要取决于单个浏览器客户端的行为,通常可自定义以启动。

刷新页面通常会调用浏览器重新发送用于获取当前页面的请求。(这也是询问您是否要重新发送POST请求的原因。)因此,只有在前一个请求也包含了Referer时,才会发送Referer。

大多数浏览器都会重新发送原始请求。这意味着,如果原始请求中包含了推荐人,则该推荐人将被包括在内

如果没有精确指定“重新加载”时会发生什么(它只提到如果URI是从没有自己URI的源获取的,则不能发送Referer:),那么可能会有一些变化

但是,考虑到您在“安全”上下文中进行讨论,我想知道您是否期望引用者:当从HTTPS访问的页面转到HTTP访问的页面并重新加载时,第15.1.3节特别提到了这一点:

Clients SHOULD NOT include a Referer header field in a (non-secure)
HTTP request if the referring page was transferred with a secure
protocol.
从安全的角度来看,我不会相信推荐人。首先,因为标准本身提到这应该是可调整的(rfc2616,第151页):

第二,从实用的角度来看,修补此字段的控件(例如Firefox)位于about:config、network.http.sendRefererHeader中,例如在


如果你想发送任意的referer头,那么“更多的工作”仅仅是一个下载的问题,并从选项开始设置referer为他们喜欢的任何内容。(-referer)。因此,试图将其用于任何类型的安全性(如处理)都是一个薄弱的想法

请注意,如果您通过JavaScript导航到某个链接,MSIE将不会发送referer,这是一个已知的错误(自IE6开发以来没有看到任何更新)


您想知道页面是在客户端还是服务器端刷新的吗?@Freddy,客户端刷新。我想到的是当你使用MSIE右键点击任何页面时,在上下文菜单上看到的“刷新”。偏执狂倾向于关闭浏览器中的推荐人(在Opera和FireFox中也很容易做到)。我真的不认为依靠它来实现任何形式的安全性有什么意义,即使这只是众多措施中的一种。@Dan:我认为Firefox没有内置这种功能,但有一个插件(可能不止一个)来实现它。“更多的工作”实际上在IE之外的其他浏览器中并不是更多的工作。而且,IE可能在7或8中有这个选项。。。我从来没有使用过它们超过一两分钟。我也没有-这就是为什么我举了curl的例子(除了可怜的“Referer:”还可以忘记处理cookies的无聊细节)。我办公室的政策是,我们从来没有遇到过我们不喜欢的安全功能,即使它不是防水的,就像把砖头扔进玻璃窗很容易就把门锁上一样,锁上房子的门也很愚蠢,但人们还是锁上了门
The information sent in the From field might conflict with the user's
privacy interests or their site's security policy, and hence it
SHOULD NOT be transmitted without the user being able to disable,
enable, and modify the contents of the field. The user MUST be able
to set the contents of this field within a user preference or
application defaults configuration.
//e.g. this will not send the referer in IE
location.href = 'somepage.html';

//and I believe it also affects
location.reload();