Rud*_*ger 6 security cookies cross-domain
我有两个子域名content
和www
域名example.com
.从内容content.example.com
被呈现在www.example.com
通过iframe.
由于对内容content.example.com
的需求传达给www.example.com
我设置document.domain="example.com"
,还可以设置allow-scripts
并allow-same-origin
在iframe中.
我担心如果用户可以上传要在iframe中显示的内容,那么它可以被利用,即将cookie的内容发送到远程域以劫持会话或其他安全漏洞.
我已经设置了另一个域,www.example2.com
并在iframed内容中放置一个AJAX请求content.example.com
来测试我的理论并发送到document.cookie
远程域.这导致_ga
cookie被发送到远程域.我允许header('Access-Control-Allow-Origin: *')
在远程域上,所以它不会导致任何问题.
为什么只发送_ga cookie?我在那里的域名和路径上有许多其他的cookie,而_ga cookies却没有发送.这样做还有其他安全风险吗?理想情况下,我希望它之间只能进行通信content.example.com
,www.example.com
而且看起来它主要是这样做的,除了谷歌分析cookie,这意味着其他人也可以这样做.
您可以使用 JSONP 来通信不同的域,而不管跨域设置和策略如何。
然而JSONP需要服务器端以返回的数据作为参数来构建回调函数。
我建议从服务器加载纯 Javascript 内容,它具有与 JSON 请求相同的跨域独立性和安全性。
假设您有一个 Javascript 文件、data.js
、 incontent.example.com
或一个服务,返回与响应中的文件相同的内容,并带有一个 JSON 对象,并以变量赋值为前缀:
result = {
"string1": "text1",
"object1": {
"string2": "text2",
"number1": 5.6
},
"number2": 7,
"array1": ["text3", "text4"]
}
Run Code Online (Sandbox Code Playgroud)
然后,在您的网页中,www.example.com
您可以有一个带有 function 的脚本loadJS
,它将服务器响应加载为脚本:
var loadJS = function (url, callback) {
var script = document.createElement('script');
script.type = "text/javascript";
script.src = url;
script.onload = function (ev) {
callback(window.result);
delete window.result;
this.parentNode.removeChild(this);
};
document.body.appendChild(script);
};
window.onload = function () {
loadJS('http://content.example.com/data.js', function (data) {
console.log(data);
});
};
Run Code Online (Sandbox Code Playgroud)
相同的函数可用于content.example.com
相反方向的请求。
为了设置 cookie 或执行 JS 中可用的任何其他功能,响应脚本data.js
可能包含一个函数而不是 JSON 对象:
result = (function () {
document.cookie = "cookie1=Value1; cookie2=Value2;";
return true;
})();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
317 次 |
最近记录: |