Javascript 外行术语中的同一原产地政策
有人能帮我更好地理解同一原产地政策吗。我看过好几个网站描述它,但我想找一个更简单的解释,你会如何向一个孩子描述它Javascript 外行术语中的同一原产地政策,javascript,html,same-origin-policy,Javascript,Html,Same Origin Policy,有人能帮我更好地理解同一原产地政策吗。我看过好几个网站描述它,但我想找一个更简单的解释,你会如何向一个孩子描述它 这似乎是我找到的最好的工作。有人能扩展吗?有人能解释为什么会存在此策略吗?基本上这意味着-只有来自同一域的脚本才能访问彼此的对象和属性而不受限制(因此,如果您有一个定义了命名函数的.js文件,您可以从同一域上托管的任何其他文件调用它) 因此,如果您正在为来自不同域的脚本提供服务,请应用限制 此策略之所以存在,是因为很容易将链接插入到另一个域上的javascript文件(例如,某些ja
这似乎是我找到的最好的工作。有人能扩展吗?有人能解释为什么会存在此策略吗?基本上这意味着-只有来自同一域的脚本才能访问彼此的对象和属性而不受限制(因此,如果您有一个定义了命名函数的
.js
文件,您可以从同一域上托管的任何其他文件调用它)
因此,如果您正在为来自不同域的脚本提供服务,请应用限制
此策略之所以存在,是因为很容易将链接插入到另一个域上的javascript文件(例如,某些javascript代码将链接插入到此类文件)。这是一种安全风险-您实际上只希望执行来自您所在站点的代码,而不希望执行任何存在的代码。需要使用同源策略来防止。想象一下这个场景:
幸运的是,同源策略在大多数情况下保护我们免受这些类型的攻击,因为Jack的恶意页面托管在与银行应用程序不同的域中,因此不允许对银行应用程序进行XHR。尽管恶意页面仍可能包含向银行应用程序发出GET请求的图像,但重要的是,具有副作用的操作不能通过GET请求启动,应用程序应检查其收到的请求的Referer标头,并利用反CSRF令牌。您尝试过吗?是的,我不愿意承认,但我仍然对此感到困惑。我找不到任何明确的理由来解释为什么这项政策甚至存在于阅读CSRF。这就是为什么。要添加到这里的答案中,实际上可以使用一个特殊的头来绕过这个问题,该头需要同时出现在客户端和服务器端。在这里阅读:+1,这是CSRF的一个好例子。还有,为什么我在读了这篇文章后在谷歌上搜索“娜塔莉·波特曼满身热沙砾”=/这正是我所希望的。非常感谢
只有来自同一域的脚本才能访问彼此的对象
。那么,为什么您可以包含来自CDN的jQuery并让它访问页面上的DOM?@Rocket:Correct。重要的是脚本执行的页面的域,而不是JS文件的宿主位置。事实上,在CORS
标准化之前,您是如何发出跨域AJAX请求的,它基本上链接到一个非现场JS文件,作为从另一个域(JSON形式)获取数据的一种方式。
var xhr = new XMLHttpRequest(),
data = "from="+victimAccount
+ "&to="+jacksAccount
+ "&amt=a+gazillion+dollars";
xhr.open("POST", "http://tbtfbank.tld/accounts/wiretransfer.aspx", true);
xhr.send(data);