1
learnshare 2015-05-24 17:47:16 +08:00 1
如果是网站调用的 API,应该只允许该网站的域名访问;如果是 APP 调用,就需要用 "*" 了。
至于安全问题,应该是通过使用比较完善的校验机制来控制访问,控制好用户认证和权限吧。 RESTful 跨域比较建议用 CORS,JSONP 这种并不是好东西。 |
2
ZackYang 2015-05-24 19:18:57 +08:00 1
考虑以下情景:
a.com 开发了一个 REST API 给 b.com 站用. 结果把 Access-Control-Allow-Origin 设置成 *. a.com REST API 权限校验存在 cookie 中, 每次发起请求的时候, 会带上这个 cookie. 现在有一个站点: c.com, 用户访问 c.com, 其中有一个 ajax 请求到 a.com 去请求一个敏感信息, 由于 a.com 没有限制域名, 所以 c.com 发起请求的时候同样会带上 a.com 的 cookie 并且能正确得到结果. 这时候 ajax 返回后立即将结果再次 ajax 发送到 c.com 的服务端. 于是, c.com 得到了只能应该 b.com 访问的敏感内容. |
4
immjun OP |
5
belin520 2015-05-24 21:43:51 +08:00 via Android 1
|
6
icqdany 2015-05-24 21:53:15 +08:00 1
Access-Control-Allow-Origin:"仅设置为需要调用的域名"
|
9
wangxiao2015 2015-06-17 17:39:30 +08:00
简单回复:
1、某些情况,浏览器你写 *,CORS 中的 request option 那步就不会让你通过; 2、无法很好的防御 CSRF,相当于从任意一个域都可以伪造目标域的请求; |