我正在一个网站上接收第三方不受信任的 Javascript 作为字符串,并且需要eval()
它。该站点具有不受信任的代码无法访问的敏感 cookie 和 localStorage。
为了解决这个问题,我iframe
在同一个域中创建了一个子页面,allow-scripts
作为唯一的沙盒属性:
<iframe src="..." sandbox="allow-scripts"></iframe>
孩子iframe
有一个预设方法列表,它可以根据来自父母的预期有效负载使用window.postMessage
. 子进程接收包含要执行的不受信任代码的父负载,eval()
并通过 将响应作为字符串返回给父负载window.postMessage
。
我已经测试并验证了孩子iframe
无法访问父 cookie 或 localStorage。
AFAIK 这是安全的,但我想从该地区有经验的人那里知道。