我最近不得不设置Access-Control-Allow-Origin
以*
为了能够进行跨子域Ajax调用。
现在,我不禁觉得,我把我的环境安全隐患。
请帮助我,如果我做错了。
Answer 1:
通过与响应Access-Control-Allow-Origin: *
,所请求的资源允许每起源分享。 这基本上意味着,任何网站可以发送XHR请求到您的网站和访问该不会是如果你没有执行这项CORS响应的情况下,服务器的响应。
因此,任何网站,就能使你的网站要求代表他们的访客,并处理其响应。 如果你有一个像认证或授权方案实现的东西,是基于东西,会自动被浏览器(饼干,基于Cookie的会话等)提供,由第三方网站引发的请求将使用他们。
这的确会带来安全风险,特别是如果你允许资源共享不只是选择的资源,但对每个资源。 在这种情况下,你应该看看当它是安全,使CORS? 。
Answer 2:
据我所知,访问控制允许来源是刚刚从服务器向浏览器发送的HTTP标头。 它限制到特定地址(或禁用)不会使你的网站更安全,例如,机器人。 如果机器人想要,他们可以忽略的头。 常规浏览器在那里(资源管理器,浏览器等),在默认情况下兑现头。 但是像应用邮差简单地忽略它。
服务器端实际上并没有检查什么的“出身”是请求时,它返回的响应。 它只是增加了HTTP标头。 这是其发送的决定以读取访问控制报头和对其进行处理请求的浏览器(客户端结束)。 请注意,在XHR的情况下,它可能会使用一个特殊的“OPTIONS”请求,要求头第一。
因此,任何有创意的脚本编写能力可以很容易地忽略整个头,无论是在其设置。
另请参见设置访问控制允许来源的可能的安全问题 。
我们其实回答这个问题
我不禁觉得,我把我的环境安全隐患。
如果有人想攻击你,他们可以轻松地绕过访问控制允许来源。 不过,通过启用“*”你做给攻击者多了一些“攻击源”着,喜欢玩,使用遵守这一HTTP头定期化网页浏览器。
Answer 3:
这里有两个例子张贴评论,当一个通配符是真的有问题的:
假设我登录到我的银行网站。 如果我去到另一个网页,然后回到我的银行,我仍然登录,因为一个cookie的。 Internet上的其他用户就可以在我的银行打了相同的URL,因为我做的,但他们将无法访问我的帐户,而该cookie。 如果跨域请求被允许,恶意网站可以有效地模拟用户。
- 布拉德
假设你有一个常见的家用路由器,如一个Linksys WRT54G什么的。 假设路由器允许跨域请求。 我的网页上的脚本可以使HTTP请求到普通路由器的IP地址(例如:192.168.1.1),然后重新配置你的路由器,允许攻击。 它甚至可以直接使用你的路由器作为一个DDoS攻击节点。 (大多数路由器测试页,其允许ping或简单的HTTP服务器的检查。这些可以被滥用集体。)
- 布拉德
我觉得这些意见应该是答案,因为他们与现实生活中的例子来说明这个问题。