# TLS Termination, WAF और CORS — API Gateway और Service Mesh

Source: https://www.geekswithgeeks.com/hi/api-gateway-service-mesh/s-tls-waf-cors

> TLS को edge पर terminate करें, web application firewall जोड़ें और cross-origin अनुरोध सही सँभालें।

## Edge की मज़बूती

Gateway पर **TLS termination** HTTPS को एक बार decrypt करता है, certificates एक जगह प्रबंधित करता है (स्वचालित नवीनीकरण के साथ, जैसे ACME/Let's Encrypt से) और आधुनिक protocol versions व HSTS लागू करने देता है। Gateway के पीछे का traffic भी, यदि ऐसे networks से गुज़रे जिन पर पूरा भरोसा नहीं, encrypted रहना चाहिए, जो ठीक वही है जो mesh का mTLS देता है। **WAF** (web application firewall, जैसे ModSecurity नियम या cloud WAF) SQL injection patterns और ज्ञात बुरे bots जैसे आम हमले रोकता है, पर वह सुरक्षा जाल है, सुरक्षित कोड का विकल्प नहीं। **CORS** headers (`Access-Control-Allow-Origin` आदि) browsers को बताते हैं कि कौन-से अन्य origins आपका API बुला सकते हैं; credentialed अनुरोधों के लिए `*` की जगह विशिष्ट origins की अनुमति दें, और `OPTIONS` pre-flight अनुरोध सँभालें। धीमे-client और बड़ी-body हमलों को कुंद करने के लिए अनुरोध **आकार और timeout सीमाएँ** भी तय करें।

## मज़बूती settings (उदाहरण)

आम nginx निर्देश; certificate paths और origins प्लेसहोल्डर हैं। यहाँ चलाए नहीं गए।

```nginx
server {
  listen 443 ssl;
  ssl_certificate     /etc/ssl/api.example.com.crt;
  ssl_certificate_key /etc/ssl/api.example.com.key;
  ssl_protocols TLSv1.2 TLSv1.3;
  add_header Strict-Transport-Security "max-age=31536000" always;

  client_max_body_size 1m;
  client_body_timeout  10s;

  location /api/ {
    add_header Access-Control-Allow-Origin "https://app.example.com" always;
    proxy_pass http://backend/;
  }
}
```

**Quiz:** Credentialed APIs के लिए `Access-Control-Allow-Origin: *` से क्यों बचें?

- [ ] यह सिर्फ़ caching बंद करता है
- [ ] यह TLS धीमा करता है
- [ ] यह वैध HTTP नहीं है
- [x] यह किसी भी वेबसाइट को user के browser से API बुलाने देगा

*Answer:* यह किसी भी वेबसाइट को user के browser से API बुलाने देगा. Wildcard origins उस browser सुरक्षा को कमज़ोर करते हैं जो CORS देता है।
