Javascript 向iframe添加新标题
如何仅为受信任的请求为每个传出请求添加新头Javascript 向iframe添加新标题,javascript,php,iframe,google-chrome-extension,Javascript,Php,Iframe,Google Chrome Extension,如何仅为受信任的请求为每个传出请求添加新头 chrome.webRequest.onBeforeSendHeaders.addListener(function(details){ var headers = details.requestHeaders; console.log("=========BEFORE=========="); console.log(headers); headers.push({ name: "CSRF",
chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
var headers = details.requestHeaders;
console.log("=========BEFORE==========");
console.log(headers);
headers.push({
name: "CSRF",
value: "CSRFTOKEN"
});
console.log("=========AFTER==========");
console.log(headers);
},
{urls: [ "*://*.example.com/*" ]},['requestHeaders']);
甚至还将此标题添加到iframe中
var attr ={"src":"http://example.com/test.php"};
var s = zen.utils.createElement(document,"iframe",attr);
document.body.appendChild(s);
这是一个示例test.php文件,它打印所有的头文件
<?php
$header=array_merge(getallheaders(),apache_response_headers());
print_r($header);
阅读。重点地雷:
如果可选的opt_extraInfoSpec
数组包含字符串'blocking'
(仅允许特定事件),则回调函数将同步处理。这意味着在回调函数返回之前,请求将被阻止
在这种情况下,回调可以返回一个,确定请求的下一个生命周期。根据上下文,此响应允许取消或重定向请求(onBeforeRequest
),取消请求或修改头(onBeforeSendHeaders
,onHeadersReceived
),或提供身份验证凭据(onAuthRequired
)
因此,要修改标题,您需要:
“阻塞”
“webRequestBlocking”
。将其添加到清单中chrome.webRequest.onBeforeSendHeaders.addListener(
function(details){
var headers = details.requestHeaders;
/* ..modify headers.. */
return { requestHeaders : headers };
},
{ urls: [ "*://*.example.com/*" ] },
[ 'blocking', 'requestHeaders' ]
);
仅供参考,有代码总是将CSRF令牌添加到URL区域的请求中,这是一个很好的解决安全问题的方法,并且几乎使CSRF毫无意义。@abraham有任何可能的威胁吗?是的。现在我不能说是否真的存在漏洞,但安全性是关于分层的,每次删除一层,攻击成功的可能性都会增加。