有沒有辦法限制允許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