0

我想知道是否有一种方法可以发送带有http请求的引用者,尽管它在浏览器中被关闭(例如使用javascript)?

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

我试图最大限度地减少攻击的变化,所以每当加载页面时,我都会更改 sessionkey ... sessionid 保持不变,但 key 会更改 ...所以基本上当页面有一些脚本或样式文件时需要从服务器发送的refer(r)er 是需要正确显示它们或具有需要脚本的某些部分的页面。当我更改为服务器上的另一个页面时,refer(r)er 会更改。好的,解释一下,这里有一个模式(如果不能理解,请说出来):

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 为空或更改到另一个页面时更改 sessionkey ...但是当“发送引用者”关闭时,这将不起作用,例如您可以在使用 Opera ... b/c 时执行此操作,然后refer(r)er 始终为空,当客户端从 test.html-page b/c 然后发送新的 style.css 请求时,我遇到了麻烦sessionkey 将被设置,但 style.css 的请求与旧的 sessionkey 一起出现......所以最简单的方法(我认为......也许我遗漏了一些东西)是使用 refer(r)er 。 ..

4

3 回答 3

5

我认为你把这件事复杂化了。

他们必须启用 cookie 才能使会话正常工作。添加带有当前会话密钥副本的 cookie。每当请求 html 文件时,测试以查看 cookie 密钥和会话密钥是否匹配。如果他们不这样做,那么您可能正在进行重放攻击。继续忽略对 .css、. 等的请求。您真正应该关心的是您的 html 文件。

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

有了这个推荐人是无关紧要的(无论如何它都可以被欺骗),并且您可以防止重播;我认为,这就是您最终追求的目标。

于 2009-07-24T15:03:53.097 回答
0

不确定您希望在这里使用什么 JavaScript,但请记住,如果您使用 JavaScript 来设置用户要去的地方(例如下一页),那么IE 根本不会发送引荐来源网址

因此,请厌倦您为页面转换添加的魔法。

于 2009-07-24T15:12:33.317 回答
0

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

(老实说我没有为此目的测试过window.name,但我确实已经将它用于跨域通信......)

希望这可以帮助。

于 2009-07-24T15:14:03.313 回答