面试的时候被问到CORS安全性问题,没答上来,想请教下大家。CORS在服务器端设置了Access-Control-Allow-Origin,不设定为*,不是只有指定的域才能发起请求吗,否则就被浏览器拦截了呀,有看到说http头可以伪造,但是手动设置Origin也会被浏览器阻止,请问CORS的漏洞到底在哪儿?有什么解决方案?谢谢
https://developer.mozilla.org...浏览器兼容性
我反而觉得CORS相交于JSONP是较为安全的跨域方式,也是标准的跨域方式。
Access-Control-Allow-Origin就是一个允许请求的域白名单,只有是这个域里有的,服务器才会统一跨域请求,如果合理的设置白名单,反而可以避免CSRF攻击。
我觉得这个问题可能是要求你从如果Access-Control-Allow-Origin为*所面临的问题考虑吧。
设置成*的一般是公共的API,为了避免被频繁请求或DDOS,一般会多出密钥验证的步骤,并且限制请求频率和次数。
还有就是CORS虽然默认不传Cookie,但Access-Control-Allow-Credentials设为true就能允许,这样也可能会有CSRF攻击的风险。
https://developer.mozilla.org...浏览器兼容性
我反而觉得CORS相交于JSONP是较为安全的跨域方式,也是标准的跨域方式。
Access-Control-Allow-Origin就是一个允许请求的域白名单,只有是这个域里有的,服务器才会统一跨域请求,如果合理的设置白名单,反而可以避免CSRF攻击。
我觉得这个问题可能是要求你从如果Access-Control-Allow-Origin为*所面临的问题考虑吧。
设置成*的一般是公共的API,为了避免被频繁请求或DDOS,一般会多出密钥验证的步骤,并且限制请求频率和次数。
还有就是CORS虽然默认不传Cookie,但Access-Control-Allow-Credentials设为true就能允许,这样也可能会有CSRF攻击的风险。