我写了这个简单的方法来处理我的简单服务器代理中的CORS.
private void handleCors(HttpServletRequest req, HttpServletResponse resp) {
final String origin = req.getHeader("Origin");
if (Strings.isNullOrEmpty(origin)) {
return;
}
if (!origin.startsWith("http://localhost:")) {
return;
}
resp.setHeader("Access-Control-Allow-Origin", origin);
resp.setHeader("Access-Control-Allow-Credentials", "true");
resp.setHeader("Access-Control-Expose-Headers", "Authorization");
resp.setHeader("Access-Control-Allow-Headers", "Authorization, Content-Type");
}
Run Code Online (Sandbox Code Playgroud)
实际应用程序不需要它,它仅在手动测试时使用(带ionic serve).我想,这是安全的,因为除了原点是localhost之外什么都不做,但比抱歉更安全.
此外,findbugs抱怨响应分裂漏洞.我应该简单地使用URLEncoder.html#encode还是有更多内容吗?
将一般去掉空格或包含空格的情况下做的没有加入CORS标头?
CORS 比 JSONP 等早期技术更安全、更灵活。
\n\nWebAPI 开箱即用,可以很好地处理GET请求。但是,一旦您开始使用它进行POST, PUT or DELETE操作,CORS 就会启动并删除对服务器的请求。CORS 会停止任何跨域请求,因此如果您的 api 正在运行www.myapi.com并且来自的请求www.mywebsite.com进来,则该请求将被丢弃。这是一项安全功能,可确保来自未知域的请求无法到达服务器。
如果您使用 Web 客户端执行 ajax 调用,那么您还需要在 ajax 调用中添加一件事,以确保 CORS 出现在所有浏览器上。
\n\n$.support.cors = true\ncrossDomain: true\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n但在一行中,如果我们想说 CORS 处理程序不安全。\n @zapl已经给出了有关此的信息。
\n
现在我试图给你一些攻击类型和一些场景。希望它能为您提供清晰的信息。
\n\n\n\n\n应用场景:
\n\n\n
\n- \n
攻击者可以通过诱使用户访问
Internet 上攻击者控制的站点来从已将此标头设置为 * 的 Intranet 站点窃取数据。- \n
当受害者导航到攻击者控制的站点时,攻击者可以通过受害者\xe2\x80\x99s 浏览器对其他远程应用程序进行攻击。
\n\n\n应用场景:
\n\n\n
\n- 攻击者可以危害站点 A 并托管恶意内容,因为知道站点 B 信任站点 A 通过 CORS\n 请求发送到站点 B 的数据,从而导致 XSS 和其他攻击。
\n- 攻击者可以危害站点 B 并使用站点 A 中公开的 CORS 功能来攻击站点 A 中的用户。
\n
\n\n\n应用场景:
\n\n\n
\n- 攻击者设置 Origin 标头或使用可信站点 A 向站点 B 发送非幂等请求。
\n- 受害者在查看可信站点 A 时登录站点 B,导致站点 B 在他不知情的情况下
\n
通过 CSRF 攻击\n 创建用户帐户。
\n\n\n应用场景:
\n\n\n
\n- 攻击者设置 Origin 标头来查看受限制的敏感信息
\n- 攻击者使用 cURL 设置自定义原始标头:
\n
curl --header \'origin:http://someserver.com\' http://myserver.com:90/demo/origin_spoof.php\nRun Code Online (Sandbox Code Playgroud)\n\n这里给出一个例子。您可以通过此链接:
\n\n| 归档时间: |
|
| 查看次数: |
573 次 |
| 最近记录: |