gpt4 book ai didi

javascript - 如何在我自己的浏览器上停用跨站点脚本防御?

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

我想在另一个域页面的 iframe 中从一个域加载页面,然后使用 JS 访问其内容。当然,这将是 XSS,所以我会收到“获取属性 HTMLDocument 的权限被拒绝...”错误。问题是,我想在我自己的浏览器上执行此操作,而不是在公共(public)访问站点(即我不需要它来保护我自己),所以我很乐意暂时关闭这种安全措施。我使用的是 firefox 3.5,想知道是否可以使用此浏览器或其他浏览器完成此操作。

最佳答案

2016 年 11 月更新在 Chrome 中禁用同源策略的一种更简单的方法是使用以下标志启动它:

google-chrome --disable-web-security --user-data-dir

更新:请注意您请求提升权限的范围。方法一按预期工作,问题是在您将使用它的同一范围内请求提升的特权(在同一函数中,在全局范围内......),它不会在任何其他范围内工作。
我用工作代码更新了示例。

它在文档中:
权限仅在请求函数的范围内授予。此范围包括请求函数调用的任何函数。当脚本离开请求函数时,特权不再适用。 http://www.mozilla.org/projects/security/components/signed-scripts.html


我正在尝试为我公司的内部网站做同样的事情(我们有 47 个不同的域基于服务器位置,并且很容易为那些仅使用 Firefox 的网站禁用“同源策略”)。

根据 mozilla 站点的文档,这些方法应该有效……我通过谷歌搜索发现,这适用于 Firefox 2,我在 FF3 和 FF4 中进行了测试,但似乎无效。你应该试试这个,maibe il 会为你工作,我仍在寻找解决方案

方法一

  1. 编辑 about:config 并将 signed.applets.codebase_principal_support 设置为 true(这将允许未签名的脚本请求提升权限特权)

  2. 在您的父脚本中请求提升的权限:

<html><head><script
type="text/javascript">
function xss()
{
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e)
{
alert(e); // console.log(e) if you have firebug
}
alert(document.getElementById('frame').contentWindow.document); // console.log()
}
</script></head>
<body onLoad="xss();"> <iframe id="frame"
src="http://example_1.com"></iframe>
</body></html>

3。现在,当您加载页面时,FF 会询问您是否授予脚本权限: firefox confirm box

允许它,您应该会收到带有文本的警报:[object HTMLDocument]

在进行任何修改之前,如果我尝试访问 ....contentWindow.document,我会收到此错误:

Error: A script from "http://example.com" was denied UniversalBrowserRead privileges.

在我得到这个之后:

Permission denied for <http://example.com> to get property Window.document from <http://example_1.com>.

如果你喜欢在命令行中工作,你可以跳过第 1 步和第 3 步并编辑 presf.js 文件(在 Linux 上:/home/$yourUser/.mozilla/firefox/$yourProfile/prefs.js)并添加 4 行

user_pref("signed.applets.codebase_principal_support", true);
user_pref("capability.principal.codebase.p0.granted", "UniversalBrowserRead");
user_pref("capability.principal.codebase.p0.id", "http://example.com");
user_pref("capability.principal.codebase.p0.subjectName", "");

方法二。

尝试添加一个策略以允许站点绕过此编辑 prefs.js 的 SOP 并添加以下行:

user_pref("capability.policy.policynames", "example");
user_pref("capability.policy.example.HTMLDocument", "allAccess");
user_pref("capability.policy.example.sites", "http://example.com http://example_1.com");

不幸的是,即使是方法 2 也无法完成这项工作。

我仍在寻找解决方案,如果有新发现,我会更新答案。

关于javascript - 如何在我自己的浏览器上停用跨站点脚本防御?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1447499/

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