gpt4 book ai didi

iframe - 正确防止跨域 iframe 消息中的 XSS

转载 作者:行者123 更新时间:2023-12-04 09:33:13 24 4
gpt4 key购买 nike

我正在构建一个站点,任何人都可以通过 postMessage 命令(即沙盒功能,而不是完全控制窗口)与我的 iFrame 进行交互。如何在不通过 XSS 暴露访问者的 cookie 的情况下做到这一点? https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage#Security_concerns

假设我有以下接收功能:

var secret = localStorage.getItem("secret");

window.addEventListener(message,function(e){
// any e.origin is allowed
if(e.func=="doX"){
var string = e.data.string1 * e.data.string2;

}else if(e.func=="doY"){
// another javascript function, no DOM interaction
config[e.data.key] = e.data.value;

}else if(e.func=="doZ"){
document.getElementById("app")=e.data.title
document.getElementById("description")=e.data.description
}
})



我在 Mozilla 页面上读到,允许来自任何来源的请求非常危险。如何正确防止每个 doX、doY 和 doZ 场景的 XSS?

我也试了一下。这些功能安全吗?
var secret = localStorage.getItem("secret");

window.addEventListener(message,function(e){
// any e.origin is allowed
if(typeof e.func!=Number) return;

if( e.func < 0 || e.func > 2) return;

if(e.func==0){ // we will call this "Safe 0"

if(e.data.num1 > 1000 || e.data.num2 > 1000) return;
var num3 = e.data.num1 * e.data.num2;

}else if(e.func==1){ // safe 1

if(!isHex(e.data.value))return; // see below for isHex func

config['something'] = e.data.value;

}else if(e.func==2){ // safe 2

if(e.data.title.length < 8) document.getElementById("app")=e.data.title;

if(e.data.description.length < 15)document.getElementById("description")=e.data.description

}
})
function isHex(h) {

var a = parseInt(h,16);
return (a.toString(16) === h)

}


我了解到 HTML 输入元素也将无法从托管站点访问,这意味着这些“postMessage”是漏洞的主要来源。最后一句话的来源: Get value of input field inside an iframe

最佳答案

As long as I don't run an eval statement on messages sent using the postMessage function to my window, is there any way arbitrary code can be executed?



任何常见的客户端 JS XSS 攻击向量都是开放的。

因此,除了 eval 之外,您还有各种 eval-by-proxy 功能(例如 new Function() ),以不安全的方式将消息中的数据插入 DOM 的效果等。

关于iframe - 正确防止跨域 iframe 消息中的 XSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54792573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com