Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 同源策略如何解决XHR、Cookie和跨页通信的问题?_Javascript_Security_Same Origin Policy - Fatal编程技术网

Javascript 同源策略如何解决XHR、Cookie和跨页通信的问题?

Javascript 同源策略如何解决XHR、Cookie和跨页通信的问题?,javascript,security,same-origin-policy,Javascript,Security,Same Origin Policy,我知道同源策略是限制来自其他域的javascript访问页面内容 我在网上读到了这些关于同一原产地政策的特别要点: XmlHttpRequests:如果跨域执行,则它们不起作用。但是为什么一个网页首先会向一个不太可信的站点发出xhr请求呢?这不是网页的错吗?为何要加以限制呢 cookies:如果恶意页面可以查看我的Facebook cookies,这是不对的。因此,如果它试图检查“document.cookies”,它无论如何也不会看到我的Facebook cookies。在这里,同样的政策在

我知道同源策略是限制来自其他域的javascript访问页面内容

我在网上读到了这些关于同一原产地政策的特别要点:

  • XmlHttpRequests:如果跨域执行,则它们不起作用。但是为什么一个网页首先会向一个不太可信的站点发出xhr请求呢?这不是网页的错吗?为何要加以限制呢

  • cookies:如果恶意页面可以查看我的Facebook cookies,这是不对的。因此,如果它试图检查“document.cookies”,它无论如何也不会看到我的Facebook cookies。在这里,同样的政策在哪里出现


  • 跨页通信:在选项卡中打开的恶意页面查看其他页面信息的唯一方式是通过cookie和/或本地存储。那么,原产地相同的政策在哪里有帮助呢


如果我使用XSS漏洞在您的页面上放置远程恶意js,它将无法向您的服务器或任何随机服务器发出请求。(事实上,它可以,但它没有所有的功能)

这不是为了保护你不访问不受信任的内容,而是为了防止你的页面访问它不应该访问的内容。如果没有同源策略,没有任何东西可以阻止您(使用用户的cookie)执行以下操作:

$.getJson('http://api.example.com/my/secret/stuff')

$(“”).appendTo('body').contents().html()
至于Cookie,这里的原产地政策并不完全相同:

Cookie使用单独的起源定义。页面可以为自己的域或任何父域设置cookie,只要父域不是公共后缀

(来自)

XmlHttpRequests

例如:当我的浏览器登录到我的银行时,使用我的浏览器停止您的网站以从我的银行的网站获取我的数据

饼干

同源策略不适用于Cookie。Cookie只需发送到其注册的站点


跨页通信:在选项卡中打开的恶意页面查看其他页面信息的唯一方式是通过cookie和/或本地存储。那么,原产地相同的政策在哪里有帮助呢

你在错误的观念下运作。也可以通过
窗口访问其他页面。打开
和框架(包括iFrame)


一旦您访问了另一个页面的DOM,您就可以从中获取数据,并且您会遇到与XHR向JavaScript公开其他网站时相同的问题。因此,同源策略通过帧锁定对远程文档的访问。

同时让您的生活变得既困难又轻松:)“在选项卡中打开的恶意页面查看另一页面信息的唯一方式是通过cookie和/或本地存储”不是真的,如果没有同源策略,你可能会陷入困境,iframesI会说,现在是时候拿起几本关于软件安全的书来了解你为什么首先需要它,这反过来又会让你的大脑爱上你的生活变得困难。当你从质疑它的需要的角度攻击它时,它不是一个好地方。为什么这个问题太宽泛了?我问了一些非常具体的问题。如果我使用XSS缺陷在你的页面上放置远程邪恶的JS,那么它将完全可以访问你的服务器。同源策略根本不能防止XSS。XSS是另一类安全问题。
当我的浏览器登录我的银行时,停止您的网站使用我的浏览器从我的银行网站获取我的数据。
因此,如果没有同源策略,我的网站如何实现这一点?向您的银行提出XHR请求?这是这种情况下唯一的另一台服务器。为什么它会泄露您的信息?“向您的银行提出XHR请求?”-是的。“为什么它会泄露您的信息?”-因为我已登录,请求来自我的浏览器。
您在错误的观念下操作。也可以通过window.open和frames(包括iframes)访问其他页面。
但是如果我使用
window.open
或通过
iframe
打开页面,看到打开页面的整个DOM有什么害处?毕竟是我打开的。@learner-你没打开。你指示我的浏览器打开它。它可能是我的银行网站(我已登录)。它可能是我的公司内部网(我在防火墙后面)。
$('<iframe src="http://gmail.com">').appendTo('body').contents().html()