Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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 除了默默无闻的安全性之外,同源策略还提供了什么安全性好处?_Javascript_Http_Security_Xmlhttprequest_Same Origin Policy - Fatal编程技术网

Javascript 除了默默无闻的安全性之外,同源策略还提供了什么安全性好处?

Javascript 除了默默无闻的安全性之外,同源策略还提供了什么安全性好处?,javascript,http,security,xmlhttprequest,same-origin-policy,Javascript,Http,Security,Xmlhttprequest,Same Origin Policy,当浏览器只限制跨域XMLHttpRequests时,我很难看到同源策略提供了什么样的安全优势 让我们来看一个关于同源策略的安全好处的很好的解释: 总结该SO答案中的内容,同源策略可防止恶意网站执行可能对外部域产生副作用的XMLHttpRequests。例如,它可以防止恶意网站在通过XMLHttpRequest对象登录的银行网站上执行交易 但是,这些相同的HTTP请求不能以另一种不违反同源策略限制的方式执行吗 例如,要在另一个域(外部域)上执行HTTP GET请求,我可以使用JSONP或类似的技术

当浏览器只限制跨域XMLHttpRequests时,我很难看到同源策略提供了什么样的安全优势

让我们来看一个关于同源策略的安全好处的很好的解释:

总结该SO答案中的内容,同源策略可防止恶意网站执行可能对外部域产生副作用的XMLHttpRequests。例如,它可以防止恶意网站在通过XMLHttpRequest对象登录的银行网站上执行交易

但是,这些相同的HTTP请求不能以另一种不违反同源策略限制的方式执行吗

例如,要在另一个域(外部域)上执行HTTP GET请求,我可以使用JSONP或类似的技术,其中我使用Javascript将HTML元素的src属性设置为外部域的所需URL。这将迫使浏览器在此外部域上执行GET请求,该GET请求与所有HTTP请求一样,将在其头中包含该外部域的cookie数据

作为另一个例子,要执行POST请求,我可以使用Javascript创建隐藏的表单元素,并触发将该表单提交到外部域。同样,特定于外部域的cookie数据将在POST请求中传递


所以我的问题是我错过了什么。。。如果可以轻松绕过同源策略的安全优势,那么它的意义何在?

同源策略阻止您读取来自不同域的响应

正如您所发现的,没有什么可以阻止您向不同的域发送请求,这就是为什么存在CSRF漏洞的原因


事实上,对CSRF令牌的防御只起作用,因为同源策略阻止您从其他域窃取令牌。

同源策略阻止您读取来自不同域的响应

正如您所发现的,没有什么可以阻止您向不同的域发送请求,这就是为什么存在CSRF漏洞的原因


事实上,对CSRF令牌的防御只起作用,因为同源策略阻止您从其他域窃取令牌。

不会阻止您发送带有凭据的请求,而是阻止您访问响应数据。要保护提交,需要使用。

不会阻止您发送带有凭据的请求,但会阻止您访问响应数据。要保护提交,需要使用。

是一个更好的答案。对于security.SE来说,这是一个很好的问题。在这里,所以这是离题的。这是一个更好的答案。对于security.SE来说,这是一个很好的问题。我能不能创建一个指向外部域的iframe,然后用javascript获取该iframe的内容?这不是从本质上获取响应数据吗?@VKK:不是;这正是同源策略阻止您执行的操作。我是否可以创建一个指向外部域的iframe,然后使用javascript获取该iframe的内容?这不是从本质上获取响应数据吗?@VKK:不是;这正是同源策略阻止您执行的操作。与我上面的评论相同:我是否可以创建一个指向外部域的iframe,然后使用javascript获取该iframe的内容?这不就是获取响应数据吗?@VKK不,SOP策略还阻止您访问外部iFrame的内容。甚至是画有外国图像的canvase的图像数据。如果你能找到解决办法,这是一个浏览器错误,也是一个非常有价值的零日:-和我上面的评论一样:我能不能创建一个指向外部域的iframe,然后用javascript获取该iframe的内容?这不就是获取响应数据吗?@VKK不,SOP策略还阻止您访问外部iFrame的内容。甚至是画有外国图像的canvase的图像数据。如果你能找到解决办法,那就是一个浏览器错误——也是一个非常有价值的零日:-