Während des Interviews wurde mir eine Frage zur CORS-Sicherheit gestellt, aber ich konnte sie nicht beantworten. Ich möchte alle um Rat fragen.
CORS setzt Access-Control-Allow-Origin auf der Serverseite, stimmt es nicht, dass nur die angegebene Domäne eine Anfrage initiieren kann? Ich habe gesehen, dass der HTTP-Header gefälscht werden kann, aber das manuelle Festlegen von Origin wird auch vom Browser blockiert. Wo liegt die Schwachstelle von CORS? Was ist die Lösung? Danke
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攻击的风险。