虽然在浏览器中关闭了发送参考(r)呃?

时间:2009-07-24 14:55:12

标签: javascript http-referer

我想知道是否有办法发送带有http请求的引用者虽然它已在浏览器中被启用(例如使用javascript)?

未发送推荐人时遇到的问题:

我正在尝试最小化攻击的变化,因此每当加载页面时我都会更改sessionkey ... sessionid保持不变,但是键更改...所以基本上当页面有一些脚本时 - 或者需要从服务器发送的样式文件refer(r)er是需要正确显示的页面,或者是需要脚本的一些部分。当我在服务器上切换到另一个页面时,引用(r)更改。好的,解释一下,这是一个模式(如果不可理解,请说出来):

start:  GET test.html --> referrer := null
            `--> GET style.css --> referrer := test.html
---- CLICK ON LINK TO GO TO: 'form.html'
        GET form.html --> referrer := test.html
            `--> GET sendRequest.js --> referrer := form.html
            `--> GET style.css --> referrer := form.html
---- CALL A PAGE DIRECTLY OVER ADDRESS BAR: http://somedomain.com/someotherpage.html
        GET someotherpage.html --> referrer := null

因此,要更改sessionkey工作:我只在refer(r)er为null或我正在切换到另一个页面时更改sessionkey ...但是当“Send referer”被转动时这将无法工作关闭,就像你在使用Opera时所做的那样... b / c那么refer(r)er总是为null,当客户端从test.html-page b / c发送style.css请求时我遇到了麻烦然后会设置新的sessionkey,但是对style.css的请求带有旧的sessionkey ...所以最简单的方法(我想......也许我错过了什么)将是使用refer(r) )呃......

3 个答案:

答案 0 :(得分:5)

我认为你过于复杂了。

他们必须启用Cookie才能使会话正常运行。添加一个包含当前会话密钥副本的cookie。每当请求html文件时,请测试cookie密钥和会话密钥是否匹配。如果他们不这样做,那么你可能正在进行重播攻击。继续并忽略对.css,。等的请求。你真正应该关心的是你的html文件。

更新密钥并在请求html文件时将其写入会话变量和cookie。

这个推荐者并不重要(无论如何都可以欺骗),你可以防止重播;我认为,这是你最终的目标。

答案 1 :(得分:0)

不确定您希望在此处使用哪种JavaScript,但要记住,如果您使用JavaScript设置用户的去向(例如下一页),那么IE won't send the referrer at all

所以要小心你为页面转换添加了什么魔力。

答案 2 :(得分:0)

好吧,我不会说我理解你的问题,但是我可能有一个使用JavaScript进行引用模拟的解决方案:你可以使用window.name属性来存储最后加载的URL,在覆盖它之前,它应该存储最后加载的页面的URL。

(老实说,我没有为此目的测试过window.name,但我确实用它来进行跨域通信......)

希望这有帮助。