Ασφάλεια API και φιλτράρισμα αιτήσεων
1) Γιατί το χρειάζεστε
API - εξωτερικά και εσωτερικά σύνορα πλατφόρμας. Κάθε σφάλμα στην εξακρίβωση ταυτότητας, την έγκριση, την επικύρωση ή την κανονικοποίηση αιτημάτων μετατρέπεται σε εκμετάλλευση τρωτών σημείων (BOLA/IDOR, έγχυση, SSRF, μαζική καταμέτρηση, εξάντληση πόρων). Σκοπός: Δημιουργία αμυντικού σε βάθος από την περίμετρο στους επιχειρηματικούς κανόνες, με μετρήσιμους SLO και έλεγχο κινδύνων.
2) Απογραφή και ταξινόμηση API
Κατάλογος API: μητρώο όλων των υπηρεσιών/τελικών σημείων, ιδιοκτήτες, εκδόσεις, τύποι πελατών (web, mobile, partners), λειτουργία (public/partner/internal), PII/χρηματοοικονομικά δεδομένα.
Κρισιμότητα: Υψηλή (χρηματοοικονομικές συναλλαγές/εξουσιοδότηση), Μέση (ανάγνωση προφίλ), Χαμηλή (δημόσιοι κατάλογοι).
Επιφάνεια επίθεσης: REST, GraphQL, gRPC, WebSocket, webhooks.
Κατάσταση: prod/stage/πειραματική, υποτιμημένη πολιτική, συμβολική/βασική διάρκεια ζωής.
Σκιά/εγκαταλελειμμένη API: ανίχνευση μέσω αρχείων καταγραφής, τηλεμετρία eBPF/Service Mesh, σύγκριση με έναν κατάλογο.
3) Υπόδειγμα απειλής (συνοπτικά)
Ταυτοποίηση: συμβολική αεροπειρατεία, δέσμευση συνεδρίας, MitM, επανάληψη.
Έγκριση: BOLA/IDOR, οριζόντια/κατακόρυφη κλιμάκωση.
Εισαγωγή: ενέσεις (SQL/NoSQL/LDAP), πρότυπο/σειρά, διαδρομή τραβερσάλ, κεφαλίδες.
Κυκλοφορία: DDoS/L7 πλημμύρες, αργές αιτήσεις, retrays φάντασμα.
Ενσωμάτωση: ανασφαλή webhooks, SSRF μέσω παραμέτρων URL, λήψεις αρχείων/σάρωσης.
Λογική: κατάχρηση των μπόνους, αγωνιστικά, ασυνέπεια της ιδεολογίας.
4) Βασικό πρότυπο ασφαλείας (ελάχιστο)
1. TLS 1. 2 + παντού, HSTS· Τα αδύναμα κρυπτογραφήματα είναι απενεργοποιημένα.
2. Επαλήθευση ταυτότητας: OAuth2/OIDC για πελάτες, mTLS/ή HMAC - υπηρεσία προς υπηρεσία.
3. Έγκριση: Κεντρική PDP (RBAC/ABAC), επιθεώρηση επιπέδου αντικειμένου (BOLA).
4. Επικύρωση: αυστηρό σύστημα (OpenAPI/JSON Schema/Protobuf), αποτυχία με επιπλέον πεδία.
5. Όρια: συντελεστής/ποσοστώσεις + διάρρηξη, ανά πελάτη/ανά IP/ανά μάρκα.
6. Ταυτότητα σε λειτουργίες εγγραφής, προστασία από επαναλήψεις/αγώνες.
7. Φιλτράρισμα WAF/πύλης: ομαλοποίηση διαδρομής/κεφαλίδας, λίστες άρνησης, μπλοκ φορτίου-αντι-μοτίβων.
8. Μυστικά: KMS/θησαυροφυλάκιο, περιστροφή κλειδιού/πιστοποιητικού, έλεγχος διαρροής.
9. Παρατηρησιμότητα: ιχνηλάτηση, αρχεία καταγραφής ελέγχου ασφαλείας (ποιος/τι/πότε/αποτέλεσμα), καταχωρίσεις.
10. Διαδικασίες: συμβάντα στο βιβλίο παιχνιδιών, περιπτώσεις δοκιμών και τακτικές πεντέστες/DAST.
5) Εξακρίβωση της γνησιότητας και διαχείριση σημάτων
: βραχύβια σημεία πρόσβασης, ανανέωση αυστηρά σύμφωνα με το OIDC· το κοινό/εκδότης/εκθέτης ελέγχονται στην πύλη.
JWT: RS256/ES256, ελάχιστη δέσμη μύδια· «nbf/exp/aud», απαγόρευση αποθήκευσης PII. Εναλλαγή κλειδιού μέσω JWKS.
DPoP/PoP: Συνδέστε το κλειδί με τον πελάτη για να μειώσετε τον κίνδυνο επανάληψης/αεροπειρατείας.
mTLS για εσωτερικά συστήματα και έμπιστους εταίρους (πιστοποίηση CN/SAN, CRL/OCSP).
HMAC (υπογραφές): deterministic canonicalization (μέθοδος + διαδρομή + χρονοσφραγίδα + nonce + body-hash), έγκυρο χρονικό παράθυρο (± 30).
Συνεδρίες περιηγητή: SameSite = αυστηρή/χαλαρή, HttpOnly, Secure; Προστασία CSRF (διπλές μάρκες υποβολής/κατάστασης).
Αποθήκευση πελάτη: στο κινητό - ασφαλής αποθήκευση (Keychain/Keystore), προστασία αποσφαλμάτωσης, πιστοποιητικά pinning.
6) Έγκριση (BOLA-πρώτη)
Επίπεδο αντικειμένου: κάθε πράξη ελέγχει το δικαίωμα σε συγκεκριμένο πόρο (ιδιοκτήτης πόρων/πεδίο εφαρμογής/χαρακτηριστικά).
RBAC/ABAC: ρόλοι + χαρακτηριστικά (χώρα, τμήμα, όρια κινδύνου, επίπεδο KYC)
Πολιτικές: άρνηση εξ ορισμού· ρητή δυνατότητα· Δοκιμές έκδοσης πολιτικής για αρνητικές περιπτώσεις.
κρύπτη απόφασης: προσαρμοστικό TTL + αναπηρία σε μεταβαλλόμενους ρόλους/τμήματα.
7) Φιλτράρισμα και ομαλοποίηση αιτήσεων (στην πύλη/WAF)
Ομαλοποίηση: συμπίεση επαναλαμβανόμενων σχισμών, απαγόρευση '../', αποκωδικοποίηση μία φορά, χώροι κοπής/μηδενικές ψηφιολέξεις.
Κεφαλίδες: επιτρεπόμενη λίστα ('Host', 'Content-Type', 'Accept', 'Authorization', 'Date', 'Idempotency-Key', απαραίτητες κεφαλίδες ιχνοστοιχείων).
Μέθοδοι: «GET/HEAD» χωρίς σώμα. 'POST/PUT/PATCH' - με «εφαρμογή/json» τύπου ή αυστηρά επιτρεπόμενη.
Διαστάσεις: max-body, max-headers, max-path. πρόωρη απόρριψη 413/431.
Αρχεία: επικυρωτής MIME, αντιιικός/αμμοκιβώτιο, απαγόρευση ενεργού περιεχομένου, ανακύκλωση εικόνων/απολύμανση.
Ανακατευθύνσεις URL/fetchi: μπλοκ SSRF (αρνηθείτε ιδιωτικές σειρές/μεταδεδομένα IP, σχήμα μόνο 'https', επιτρεπόμενα πεδία λίστας).
Πρότυπα SQL/NoSQL: υπογραφές έγχυσης μέσω συνόλων κανόνων WAF + παραμετροποίηση των ερωτημάτων από εξυπηρετητή.
Παράδειγμα πολιτικής κεφαλίδας (Pseudo Format)
deny_headers: ["X-Forwarded-Proto","X-Original-URL","Proxy-Connection","Destination"]
require_headers: ["Authorization" (для protected), "Content-Type" (для write)]
strip_duplicates: true max_header_count: 32 max_header_size: 16KB
8) Όρια, ποσοστώσεις και προστασία αντισωμάτων
Περιορισμός ταχύτητας: κουβάς-μάρκας/κουβάς-διαρροής. επίπεδα - ανά IP, ανά πλήκτρο API, ανά χρήστη, ανά org.
Ποσοστώσεις: ημερήσιες/μηνιαίες, χωριστές για γραπτές/εκτεταμένες μεθόδους.
Προσαρμοστικότητα: δυναμική σύσφιξη υπό ανωμαλίες (αιφνίδια έκρηξη/ευπιστία).
Αργή-λόρις/αργή-POST: ανάγνωση/διατήρηση-ζωντανών χρονοδιαγραμμάτων, ταυτόχρονος περιορισμός σύνδεσης.
Αντίκρισμα: δακτυλικό αποτύπωμα συσκευής, σημεία συμπεριφοράς, απόδειξη εργασίας/captcha για αυξημένο κίνδυνο, κατάλογος δικτύων torus/πληρεξουσίου.
Έλεγχος IP: φίλτρα geo/ASN, άρνηση καταλόγων «βρώμικων» υποδίκτυων, δυνατότητα καταλόγων για συνεργάτες/διοικητικές επιτροπές.
9) Επικύρωση δεδομένων και κυκλωμάτων εισόδου
Αποτυχία: Όλα όσα αποτυγχάνουν στο πρόγραμμα είναι 400. Επιπλέον πεδία - απορρίψτε.
Τύποι/κλίμακες: αριθμοί, ημερομηνίες (UTC/ISO-8601), τιμές enum, μήκη γραμμής, regexps.
Ποιότητα JSON: μέγιστη φωλιά, απαγόρευση μεγάλων συστοιχιών/κλειδιών, κανονική τάξη (προαιρετικά).
Επικύρωση επιχείρησης: ταυτότητα σύμφωνα με το «Idempotency-Key». κανόνες καταπολέμησης της απάτης (όρια συχνότητας λειτουργίας, ανώτατα όρια ποσών).
GraphQL: όρια βάθους/πολυπλοκότητας, επιτρεπόμενα ερωτήματα, έγκριση ανά πεδίο.
gRPC: αυστηρά συστήματα Protobuf, υποχρεωτικά πεδία, όρια μεγέθους μηνυμάτων.
10) Webhooks και εξωτερικές κλήσεις
Υπογραφή: HMAC με χρονοσφραγίδα/nonce. επαλήθευση πριν από την επεξεργασία· παράθυρο +/- 5 λεπτά.
Παράδοση: Retrai με εκθετική παύση και νευρικότητα. μέγιστες απόπειρες· Απενεργοποίηση ID γεγονότος
Ο προμηθευτής IP επιτρέπει τη λίστα ξεχωριστών υποδιαιρέσεων/διαδρομών. ελάχιστη στοίβα φιλοξενίας.
Απαντήσεις: 2xx μόνο μετά από επιτυχή εσωτερική εγγραφή. διαφορετικά 4xx/5xx με σαφή κωδικό.
Εξερχόμενος έλεγχος SSRF: όταν καλείτε URL - επιτρεπόμενη λίστα, αρνηθείτε ιδιωτικές διευθύνσεις.
11) Κρυπτογράφηση και μυστική διαχείριση
Στο κανάλι: TLS 1. 2+/1. 3, pinning, αυστηρή πολιτική κρυπτογράφησης.
Μόνο: κρυπτογράφηση αποθήκευσης DB/αντικειμένου, ξεχωριστά κλειδιά για PII/χρηματοοικονομικά δεδομένα.
KMS/Θησαυροφυλάκιο: κεντρική αποθήκευση μυστικών, σύντομη TTL, αυτόματη περιστροφή.
Κλειδιά και πιστοποιητικά: χωριστά για περιβάλλοντα. τον έλεγχο των ζητημάτων· απαγόρευση εξόδου σε κορμούς.
Ενδοσκόπηση σημάτων: offline recocation lists, short 'exp'.
12) Παρατηρησιμότητα, λογιστικός έλεγχος και απόκριση
Αρχεία καταγραφής ασφαλείας: απόπειρες/επιτυχίες εξακρίβωσης ταυτότητας, αστοχίες αδειοδότησης, περιστατικά περιορισμού των επιτοκίων, αλλαγές ρόλου/ορίου.
Ανίχνευση: συσχέτιση-ID από το τέλος έως το τέλος. εξωτερική ιχνηλάτηση κλήσεων.
Μετρήσεις: RPS, P95/P99 καθυστέρηση, ρυθμός σφάλματος ανά κωδικό, μερίδιο 401/403/429, όρια επιτάχυνσης, ανωμαλίες.
Συναγερμοί: 401/403/429 ακίδες, 5xx ανάπτυξη, συχνές συγκρούσεις ιδεότητας, έντονες αποκλίσεις του γραφήματος πολυπλοκότητας QL.
Playbooks: μπλοκάρισμα κλειδιών/μαρκών, γρήγορη επαναφορά των κανόνων, προθέρμανση της λίστας άρνησης, ειδοποίηση των ιδιοκτητών υπηρεσιών.
Εγκληματολογία: διατήρηση αμφιλεγόμενου ωφέλιμου φορτίου (με ασφαλή επεξεργασία PII), επανάληψη σε μεμονωμένο περίπτερο.
13) Σφάλματα και απαντήσεις στον πελάτη
Ομοιόμορφη μορφή σφάλματος (κωδικός, μήνυμα, ιχνοστοιχείο, κατηγορία).
Δεν υπάρχουν διαρροές: δεν αποκαλύπτονται SQL, ονομασίες πινάκων, εσωτερικά idies. 403 αντί για «γιατί όχι».
400 (επικύρωση), 401 (χωρίς επικύρωση), 403 (χωρίς δικαιώματα), 404 (ύπαρξη μάσκας), 405/406, 413/429, 500/503.
Retry-Hints: для 429 - 'Retry-After', για την ταυτότητα - συμβουλές σχετικά με την επανάληψη με το ίδιο κλειδί.
14) Αρχιτεκτονικά πρότυπα
Zero-Trust: mTLS, ρητή εξουσιοδότηση μεταξύ όλων των υπηρεσιών, ελάχιστα προνόμια.
Πύλη API + WAF + πλέγμα υπηρεσίας: διαχωρισμός καθηκόντων - περίμετρος, πολιτικές L7, εσωτερική εξακρίβωση ταυτότητας.
Κανάριος/μπλε-πράσινο: Εφαρμογή νέων κανόνων διήθησης σταδιακά με εποπτεία.
Αποτυχία-κλείσιμο: για κρίσιμη γραφή, είναι καλύτερο να αρνηθεί κανείς με ασφάλεια παρά να επιτρέψει εσφαλμένη λειτουργία.
Αντίθλιψη: ουρές/προσκρουστήρες, διακόπτης κυκλώματος, χρονοδιακόπτες/προϋπολογισμοί.
15) Παραδείγματα πρακτικών κανόνων (ψευδο-ρύθμιση)
15. 1 Περιορισμός των διαδρομών και των μεθόδων
/api/v1/payments:
allow_methods: [POST, GET]
auth: oauth2_required body:
content_type: application/json max_size: 256KB
15. 2 Ιδιαιτερότητα
require_header: Idempotency-Key (UUIDv4)
store: redis:ttl=24h on_duplicate: return_previous_result
15. Υπογραφή αίτησης (HMAC)
signature:
scheme: "HMAC-SHA256"
required_headers: ["X-Signature","X-Timestamp","X-Nonce"]
allowed_drift: 300s string_to_sign: METHOD + "\n" + PATH + "\n" + SHA256(body) + "\n" + X-Timestamp + "\n" + X-Nonce
15. 4 Προστασία SSRF
outbound_http:
allowlist_domains: ["kyc. partner. com","psp. example. net"]
block_private_ip: true require_https: true
15. 5 Όριο GraphQL
graphql:
max_depth: 8 max_complexity: 500 allowlisted_operations_only: true
16) Ιδιαιτερότητες του iGaming/Finance
Όρια τμήματος: ανάλογα με το προφίλ CCM/χώρας/κινδύνου.
Χρονικά παράθυρα: κανόνες συχνότητας κατάθεσης/απόσυρσης, «ψύξη» μεταξύ συναλλαγών.
Αντι-κατάχρηση πριμοδότησης: συνεπείς κλειδαριές σε λογαριασμό/συσκευή/εργαλείο IP/πληρωμής.
Έλεγχος των κανονιστικών απαιτήσεων: αποθήκευση αρχείων καταγραφής ενεργειών και αποφάσεων (KYC/AML), περίοδοι διατήρησης, αμετάβλητα αρχεία καταγραφής.
17) Έτοιμος κατάλογος ελέγχου Prod
- Πλήρης κατάλογος API και χάρτης ροής δεδομένων (PII/financial tagged).
- Σχήματα OpenAPI/Protobuf, δοκιμές επικύρωσης και συμβάσεις σε CI.
- Διάρθρωση mTLS/HMAC/OAuth2 σύντομες μάρκες TL· εναλλαγή κλειδιού.
- δοκιμές BOLA και περιπτώσεις αρνητικής έγκρισης· κεντρικό PDP.
- Όρια/ποσοστώσεις/αντι-bot, προστασία από την αργή λόρις. Φίλτρα IP.
- Κανόνες ομαλοποίησης WAF/πύλης, υπογραφές κατά των εγχύσεων.
- Ταυτότητα των πράξεων εγγραφής. προστασία από την επανάληψη.
Υπογραφές Webhook και επιτρεπόμενη λίστα. μεμονωμένα τελικά σημεία.
- Μυστικά στο KMS/θησαυροφυλάκιο κρυπτογραφημένες αποθήκες· προειδοποιήσεις για ανωμαλίες.
- Πίνακες, καταχωρίσεις, αρχεία καταγραφής λογιστικών ελέγχων· περιστατικά με βιβλία αναπαραγωγής.
- Τακτική pentest/DAST/SAST, κομμάτια ευπάθειας και λήψη patch.
18) Αντιπατερίδια (που δεν είναι δυνατόν)
Εμπιστοσύνη 'X-Forwarded-' χωρίς άκαμπτο TLS στην περίμετρό του.
Αποδοχή αυθαίρετων συστημάτων «τύπου περιεχομένου» και «μαλακών» JSON.
Μακρόβια JWT χωρίς ανάκληση/περιστροφή.
Συνδυασμός ρόλων και επιχειρηματικών κανόνων σε κώδικα χωρίς συγκεντρωτικές πολιτικές.
Αρχεία καταγραφής με μυστικά/PII. λεπτομερή μηνύματα προς τα έξω.
«Προσωρινά» ανοικτά τελικά σημεία χωρίς όρια και έγκριση.
19) Έκδοση και αποεπεξεργασία
Εκδόσεις στη διαδρομή/κεφαλίδα. πολιτική υποστήριξης (π.χ. N-2).
Ανακοινώσεις: προθεσμίες για παράλειψη, παρακολούθηση της χρήσης παλαιών εκδόσεων, ελεγχόμενη παύση λειτουργίας.
Συμβατότητα: συμβάσεις πελατών/εταίρων και πίνακες δοκιμών.
20) Δοκιμές ασφάλειας
Δοκιμές συμβάσεων συστημάτων/πολιτικών, ασαφείς εισροές, αρνητική αυτοματοποίηση.
Χαρακτηριστικά επιδόσεων με όρια/ποσοστώσεις, δοκιμή προστασίας (κυκλοφορία χάους).
Red-team/bug-bounty: BOLA scripts, SSRF, υπογραφές/replays, GraphQL-πολυπλοκότητα.
TL, DR
1. Κατάλογος API + αυστηρά συστήματα.
2. για τους πελάτες, mTLS/HMAC μέσα.
3. Περίμετρος BOLA ανά πόρο (ABAC/RBAC).
4. Φιλτράρισμα: ομαλοποίηση διαδρομών/κεφαλίδων, όρια, κανόνες WAF.
5. Ταυτότητα, υπογραφές, αναπαραγωγή/προστασία SSRF.
6. KMS/Θησαυροφυλάκιο και μυστική περιστροφή.
7. Παρατηρησιμότητα, ειδοποιήσεις, βιβλία αναπαραγωγής.