有没有办法限制允许iframe在父级中执行的操作?我所寻找的是一个安全模型周围的Javascript,看起来像:如何防止涉及嵌入式iframe的CSRF/XSRF攻击?
两个“trusted.html的模样:
<html><body>
<script type="text/javascript">
function InternalCall()
{
window.parent.AllowedToAccess();
}
function InternalCall2()
{
window.parent.NotAllowedToAccess();
}
</script>
<security>
javascript:window.parent {
Allow javascript:document.body.offsetHeight;
Allow javascript:document.title;
}
script.untrusted {
Deny All;
}
</security>
<script type="text/javascript">
window.parent.AllowedToAccess();
InternalCall();
</script>
<script type="text/javascript" src="http://www.anothersite.com/untrusted.js" secclass="untrusted"></script>
<script type="text/javascript">
window.parent.NotAllowedToAccess();
InternalCall2();
window.parent.jQuery(window.parent.body).append('<div id="badid"></div>');
window.parent.jQuery('#badid').load('SomethingIShouldnt.php');
</script>
</body>
</html>
和'SomethingIShouldnt.php很像:
NotAllowedToAccess();
和 'untrusted.js' 的样子:
window.parent.AllowedToAccess();
InternalCall();
window.parent.NotAllowedToAccess();
InternalCall2();
window.parent.jQuery(body).append('<div id="badid"></div>');
window.parent.jQuery('#badid').load('SomethingIShouldn't.php');
(呃...对于过度杀伤对不起)
你会注意到HTML代码中不存在的'安全'标签。我正在思考一些CSS selector-ish声明的问题,其中包含一些类似Apache的安全语法,用于定义规则。 (我没有使用window.parent规则,但它有希望向阻止跨站点脚本编写的浏览器演示一个体面的解决方法,这对于处理非常令人沮丧 - “我相信父窗口只能访问我窗口的高度,标题”)。我希望像这样的东西已经以某种形式存在(甚至是草稿)。但恐怕答案是'不'。
这可以完成(甚至部分)吗?如果不是,那么我需要与谁谈话才能实现这样的目标(标准委员会或浏览器实施者)?当然,假设这甚至有意义?
写入漏洞利用是证明安全系统免受攻击的唯一方法。一个安全系统是危险的,直到它被证明保证你的安全。 – rook 2010-01-26 16:48:43