赞
踩
<!-- a.demo.com -->
<iframe name="iframeName" id="iframeId" src="b.demo.html" frameborder="0"></iframe>
window.postMessage(data, orgin, [transfer])
postMessage() 有三个参数
onmessage接受的MessageEvent对象有四个属性
// a.demo.com
window.addEventListener("message", function(event) {
if (event.origin !== 'http://b.demo.com') return;
// todo
toggleFullScreen()
})
window.toggleFullScreen = () => {
// do something
}
// b.demo.com
let data = {name: 'rmy'}
window.parent.postMessage(data, "http://a.demo.com")
注意:获取子元素的document时要确保子元素所有dom元素已经挂载完毕,因此在原生的写法时,必须写在window的onload事件中
// a.demo.com
window.toggleFullScreen = () => {
// do something
}
// b.demo.com
document.domain = 'demo.com' // 或 a.demo.com
window.parent.toggleFullScreen()
具体的,对于点击劫持,主要有 3 项应对措施:
Content-Security-Policy: script-src 'self'; object-src 'none';
style-src cdn.example.org third-party.org; child-src https;
// 脚本:只信任当前域名
// 标签:不信任任何URL,即不加载任何资源
// 样式表:只信任cdn.example.org和third-party.org
// 框架(frame):必须使用HTTPS协议加载
// 其他资源:没有限制
<meta http-equiv="Content-Security-Policy" content="script-src 'self'; object-src 'none'; style-src cdn.example.org third-party.org; child-src https:">
限制选项
# 限制所有的外部资源,都只能从当前域名加载
Content-Security-Policy: default-src 'self'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。