如果JavaScript具有相同的源策略,这是否意味着我无法动态加载来自不同域的图像?
也许有一些设置可以在扩展上下文中禁用它.由于我正在开发一个扩展,我自己的责任是不要射击我自己的目标.在开发浏览器扩展时,完全不合理的安全事项是非常令人沮丧的.
我不想通过全局禁用它来使整个浏览器不安全.仅适用于manifest.json中"content_scripts"部分中设置的脚本
我想打从Web服务调用的http: //www.somedomain.com到HTTPS://www.somedomain.com
如果没有设置测试的麻烦,有人可以确认这是否会被认为是同一个来源?
我的假设是,这样会很好,因为在这种情况下成功共享cookie.
两部分问题......
基本上,在一天结束时,我希望有一个file
<input>
让用户从他们的文件系统中选择一个图片文件.然后我想在页面上以img标签显示它.我需要稍后处理它,所以我知道data:
不是下降的道路,这似乎是它离开了blob:
,我无法用我的googlefu弄清楚它是否是X原点.
那么被blob:
认为是X原点?如果我有一个<img>
的@src
作为一个blob:
URI,我就能getImageData()
上呢?
如果是这样,那你怎么把这一切都拿出来?我想如果一个人知道怎么做,那可能很简单,但是我的googlefu再次失败了......
所以:
blob:
X原点?blob:
从file
<input>
内容中获取URI ?我刚把自己的博客从wordpress改为django-zinnia.百日草在django-admin中使用WYMeditor(https://github.com/wymeditor/wymeditor)iframe进行博客文章和内容输入,现在由于同源问题我无法访问iframe.我在浏览器控制台中看到的错误是:
Blocked a frame with origin "http://www.mydomain.com" from accessing a frame with origin "http://mybucket.s3.amazonaws.com".
Protocols, domains, and ports must match.
WYMeditor.WymClassSafari.initIframe
onload
Run Code Online (Sandbox Code Playgroud)
我可以在我的CORS配置中为存储桶更新参数以允许iframe加载交叉源吗?我已经有了
<AllowedOrigin>http://www.mydomain.com</AllowedOrigin>
Run Code Online (Sandbox Code Playgroud)
在我目前的CORS规则中:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://mydomain.herokuapp.com</AllowedOrigin>
<AllowedOrigin>http://mydomain.com</AllowedOrigin>
<AllowedOrigin>http://www.mydomain.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Content-*</AllowedHeader>
<AllowedHeader>Host</AllowedHeader>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud) django amazon-s3 cross-domain same-origin-policy amazon-web-services
在我的Symfony应用程序中,我使用的是谷歌图表.
我收到一个错误:
XMLHttpRequest cannot load https://www.google.com/uds/api/visualization/1.0/dca88b1ff7033fac80178eb526cb263e/ui+en.css. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://foodmeup.dev' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)
我试图通过设置一个监听器来解决这个问题,该监听器为响应添加标头(请参阅此处的cors监听器:Symfony2 - 我如何设置自定义标头?)并且它不起作用,我得到同样的错误.
<?php
namespace AppBundle\EventListener;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
class CorsListener
{
public function onKernelResponse(FilterResponseEvent $event)
{
$response = $event->getResponse();
$responseHeaders = $response->headers;
$responseHeaders->set('Access-Control-Allow-Headers', 'origin, content-type, accept');
$responseHeaders->set('Access-Control-Allow-Origin', '*');
$responseHeaders->set('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, PATCH, OPTIONS');
$event->setResponse($response);
}
}
Run Code Online (Sandbox Code Playgroud)
在我看来,我使用一个简单的谷歌图表:
<div class="piechart margin-auto" style="height: 220px;" data-completeness="{{ completeness }}"></div>
<script>var googleCharts = [];</script>
<script type="text/javascript">
function drawProfilePieCharts()
{ …
Run Code Online (Sandbox Code Playgroud) 可悲的是,我需要在nonasp.net网站上使用IFrame.服务器将托管两个应用程序.
Iframe加载内容,但当我点击此按钮链接时,它会给出错误:
in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.
Run Code Online (Sandbox Code Playgroud)
在剃刀中我使用的是Url.Action,我读到了关于使用的内容
&output=embed
Run Code Online (Sandbox Code Playgroud)
所以我试图这样做:
<button class="btn btn-success" onclick="location.href='@Url.Action("AddComment", "Home", new { id = item.id })&output=embed';return false;">Add Comment</button>
Run Code Online (Sandbox Code Playgroud)
然后我得到了错误
A potentially dangerous Request.Path value was detected from the client (&).
Run Code Online (Sandbox Code Playgroud)
然后我尝试将其添加到web.config
<system.web>
<httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" />
<pages validateRequest="false" />
</system.web>
Run Code Online (Sandbox Code Playgroud)
然后我收到了这个错误......
HTTP Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.
Run Code Online (Sandbox Code Playgroud)
更新:
我发现即使没有Iframe,网址最终会是:
http://localhost:17308/Home/AddComment/4&output=embed
1. would that URL …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用前端的AngularJS向使用Sails JS(NodeJS)运行的远程服务器发出请求,并且我收到此源'null'错误:
XMLHttpRequest cannot load http://remoteserver:1337/login/. The 'Access-Control-Allow-Origin' header contains the invalid value ''. Origin 'null' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)
我的请求看起来像是:
$http.post('http://remoteserver:1337/login/', { email: userData.email, password: userData.password});
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我在应用程序中动态创建一个iframe,结果如下所示:
<iframe src="blob:http%3A//localhost%3A9292/0194dfed-6255-4029-a767-c60156f3d359"
scrolling="no" sandbox="allow-scripts allow-popups allow-same-origin"
name="sandbox" style="width: 100%; height: 100%; border: 0px;"></iframe>
Run Code Online (Sandbox Code Playgroud)
具有这样的沙盒配置是否安全(特别是允许将iframe内容视为来自同一来源)?
我是网站安全的新手,目前正在尝试深入了解同源策略。虽然在 stackoverflow 和其他地方有关于 SOP 概念的非常好的帖子,但我找不到关于 chrome 和其他浏览器是否允许从一开始就“发送”跨域 XHR 发布请求的更新信息。
从这个5 年前的帖子来看,chrome 似乎允许请求传递到请求的服务器,但不允许读取请求者的响应。
我在我的网站上进行了测试,试图从不同的域更改我服务器上的用户信息。详情如下:
用户(登录到 www.mysite.com 时)打开 www.attacker.mysite.com 并按下一个按钮,该按钮会向“www.mysite.com”服务器发出 POST 请求......提交的隐藏表单(此处没有令牌) case) 具有更改“www.mysite.com”服务器上的用户信息所需的所有信息--> 结果:CSRF 成功攻击:用户信息确实发生了变化。
现在做同样的事情,但使用 javascript 通过 JQuery 提交表单.post
而不是提交表单--> 结果:除了 chrome 给出正常响应:
请求的资源上不存在“Access-Control-Allow-Origin”标头
,我发现在服务器端没有做任何更改......似乎请求甚至没有从浏览器通过。用户信息根本没有改变!虽然这听起来不错,但我期待相反。
根据我的理解和上面链接的帖子,对于跨域请求,浏览器应该只阻止服务器响应,而不是从一开始就将发布请求发送到服务器。另外,我没有任何 CORS 配置集;没有Access-Control-Allow-Origin headers
被发送。但即使我有那个设置,它也应该只适用于“读取”服务器响应而不是实际发送请求......对吗?
我想到了预检,其中发送请求以检查服务器是否允许它,从而在发送其实际数据以更改用户信息之前阻止请求。但是,根据Access_Control_CORS,这些预检仅在不适用于我的简单 AJAX 发布请求的特定情况下发送(默认情况下包括带有 enctype 的简单表单,application/x-www-form-urlencoded
并且不发送自定义标头)。
那么,chrome 是否已经更改了其安全规范以从一开始就阻止对跨域的 post 请求?或者我对同源策略的理解在这里遗漏了什么?
无论哪种方式,了解是否有在不同 Web 浏览器中实施的更新安全措施的来源都会有所帮助。
javascript ×5
html ×2
iframe ×2
security ×2
ajax ×1
amazon-s3 ×1
angularjs ×1
asp.net-mvc ×1
blob ×1
cross-domain ×1
csrf ×1
django ×1
html5 ×1
http ×1
node.js ×1
post ×1
sails.js ×1
symfony ×1
web-services ×1