Site icon BintoroSoft PDF Tools

CORS korrekt konfigurieren: Security ohne Dev-Blocker

Close up of computer web page code inside of html file. Big data and Internet of things trend. Application web source code on monitor.

Cross-Origin Resource Sharing (CORS) ist ein essenzielles Sicherheitsfeature moderner Webanwendungen, das den Zugriff von Ressourcen zwischen verschiedenen Domains steuert. Eine fehlerhafte Konfiguration kann entweder legitime Requests blockieren oder Angreifern ungewollt Zugriff gewähren. In diesem Artikel betrachten wir praxisnah, wie CORS korrekt eingerichtet wird, typische Fallstricke vermieden werden und gleichzeitig eine reibungslose Entwicklererfahrung erhalten bleibt.

Grundlagen von CORS

CORS regelt, welche Domains auf Ressourcen einer Webanwendung zugreifen dürfen. Der Browser überprüft anhand von HTTP-Headern, ob ein Request zulässig ist.

Wichtige Header

Warum CORS notwendig ist

Ohne CORS könnten Webanwendungen von beliebigen Domains Requests absetzen, was XSS oder Datenexfiltration erleichtern würde. CORS stellt sicher, dass nur vertrauenswürdige Ursprünge interagieren dürfen.

Best Practices für sichere CORS-Konfiguration

Implementierung in Nginx

Ein gängiger Ansatz ist die Definition von CORS-Headern im Reverse Proxy:

server {
    listen 443 ssl;
    server_name api.example.com;
location / {
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' 'https://frontend.example.com';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Max-Age' 86400;
return 204;
}

add_header 'Access-Control-Allow-Origin' 'https://frontend.example.com';
add_header 'Access-Control-Allow-Credentials' 'true';
proxy_pass http://backend;
}

}

Implementierung in Apache

Apache ermöglicht die CORS-Konfiguration über mod_headers:

<VirtualHost *:443>
    ServerName api.example.com
Header always set Access-Control-Allow-Origin "https://frontend.example.com"
Header always set Access-Control-Allow-Credentials "true"
Header always set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Header always set Access-Control-Allow-Headers "Authorization, Content-Type"

<Location />
Require all granted
</Location>

Typische Fehlerquellen

Testing und Debugging

Die Überprüfung von CORS kann über Browser-DevTools oder CLI-Tools erfolgen:

curl -i -X OPTIONS https://api.example.com/endpoint 
  -H "Origin: https://frontend.example.com" 
  -H "Access-Control-Request-Method: POST"

Browser-Fehler wie Access to fetch at '...' from origin '...' has been blocked by CORS policy deuten auf Fehlkonfigurationen hin.

Erweiterte Patterns

In komplexen Architekturen kann dynamische CORS-Whitelist-Logik sinnvoll sein:

Fazit für Dev- und Prod-Umgebungen

Eine saubere CORS-Konfiguration verhindert Sicherheitslücken, während Entwickler weiterhin flexibel auf APIs zugreifen können. Die Kombination aus Proxy-Level Header-Setzung, klar definierten Whitelists und Preflight-Caching bietet eine robuste und performante Lösung für produktive Webstacks.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Exit mobile version