English | 繁中版 | 简中版 | العربية | Azərbaycan | Български | বাংলা | Čeština | Deutsch | Ελληνικά | Español | فارسی | Français | हिंदी | Indonesia | Italiano | 日本語 | 한국어 | ພາສາລາວ | Македонски | മലയാളം | Монгол | Nederlands | Polski | Português (Brasil) | Русский | ไทย | Türkçe | Українська | Tiếng Việt
Llista de comprovació de les contramesures de seguretat més importants a l'hora de dissenyar, provar i llançar la vostra API.
- No utilitzeu
Basic Auth. Utilitzeu l'autenticació estàndard en el seu lloc. - No reinventeu la roda en
Autenticació,generació de tokens,emmagatzematge de contrasenyes. Utilitzeu els estàndards. - Utilitzeu polítiques de límit de reintents (
Max Retry) i funcionalitats de jailing al Login. - Utilitzeu el xifratge en totes les dades sensibles.
- Limiteu les sol·licituds (
Throttling) per evitar atacs de DDoS / força bruta. - Utilitzeu HTTPS al servidor amb TLS 1.2+ i xifrats segurs per evitar atacs MITM (Man In The Middle Attack).
- Utilitzeu l'encapçalament
HSTSamb SSL per evitar atacs d'extracció SSL. - Desactiveu les llistes de directoris.
- Per a les API privades, permeteu l'accés només des de IPs/hosts autoritzats.
- Valideu sempre
redirect_urial servidor per permetre només URL autoritzades. - Intenteu canviar sempre per codi i no per tokens (no permeteu
response_type=token). - Utilitzeu el paràmetre
stateamb un hash aleatori per evitar CSRF en el procés d'autorització d'OAuth. - Definiu l'scope per defecte i valideu els paràmetres d'scope per a cada aplicació.
- Utilitza el mètode HTTP adequat segons l'operació:
GET (llegir),POST (crear),PUT/PATCH (reemplaçar/actualitzar), iDELETE (eliminar), i respon amb405 Method Not Allowedsi el mètode sol·licitat no és adequat per al recurs sol·licitat. - Valida el
content-typea l'encapçalament Accept de la sol·licitud (Content Negotiation) per permetre només el teu format compatible (per exemple,application/xml,application/json, etc.) i respon amb una resposta406 Not Acceptablesi no coincideix. - Valida el
content-typede les dades enviades com accepteu (per exemple,application/x-www-form-urlencoded,multipart/form-data,application/json, etc.). - Valida l'entrada de l'usuari per evitar vulnerabilitats comunes (per exemple,
XSS,Injecció SQL,Execució de codi remot, etc.). - No utilitzis cap dada sensible (
credentials,passwords,security tokens, orAPI keys) a l'URL, sinó que utilitza l'encapçalament d'autorització estàndard. - Utilitza només el xifratge al servidor.
- Utilitza un servei d'API Gateway per habilitar polítiques de memòria cau, polítiques de límit de taxa (per exemple,
Quota,Spike ArrestoConcurrent Rate Limit) i desplegar recursos d'API dinàmicament.
- Comprova si tots els endpoints estan protegits darrere de l'autenticació per evitar el procés d'autenticació trencat.
- S'hauria d'evitar l'ID de recurs propi de l'usuari. Utilitza
/me/ordersen lloc de/user/654321/orders. - No utilitzis IDs autoicrementals. Utilitza
UUIDen lloc d'això. - Si estàs analitzant dades XML, assegura't que l'anàlisi d'entitats no estigui habilitat per evitar
XXE(XML external entity attack). - Si estàs analitzant XML, YAML o qualsevol altre llenguatge amb àncores i referències, assegura't que l'expansió d'entitats no estigui habilitada per evitar
Billion Laughs/XML bomba través d'un atac d'expansió d'entitats exponencial. - Utilitza un CDN per carregar fitxers.
- Si estàs tractant amb una gran quantitat de dades, utilitza Workers i Queues per processar el màxim possible en segon pla i retornar una resposta ràpida per evitar el bloqueig HTTP.
- No oblidis desactivar el mode DEBUG.
- Utilitza stacks no executables quan estiguin disponibles.
- Envia l'encapçalament
X-Content-Type-Options: nosniff. - Envia l'encapçalament
X-Frame-Options: deny. - Envia l'encapçalament
Content-Security-Policy: default-src 'none'. - Elimina els encapçalaments d'identificació -
X-Powered-By,Server,X-AspNet-Version, etc. - Força
content-typeper a la teva resposta. Si tornesapplication/json, llavors la teva resposta decontent-typeésapplication/json. - Do not return overly specific error messages to the client that could reveal implementation details, use generic messages instead, and log detailed information only on the server side.
- No retornis dades sensibles com
credencials,contrasenyesotokens de seguretat. - Retorna el codi d'estat adequat segons l'operació completada. (per exemple,
200 OK,400 Bad Request,401 Unauthorized,405 Method Not Allowed, etc.).
- Auditora el teu disseny i implementació amb cobertura de tests unitàris i d'integració.
- Utilitza un procés de revisió de codi i ignora l'autoaprovació.
- Assegura't que tots els components dels teus serveis siguin escanejats estàticament per un programari AV abans de desplegar-los a producció, incloent biblioteques de tercers i altres dependències.
- Executa contínuament tests de seguretat (anàlisi estàtica/dinàmica) en el teu codi.
- Comprova les teves dependències (tant el programari com el sistema operatiu) per a vulnerabilitats conegudes.
- Dissenyar una solució de reversió per a desplegaments.
- Utilitza inicis de sessió centralitzats per a tots els serveis i components.
- Utilitza agents per monitorar tot el tràfic, errors, sol·licituds i respostes.
- Utilitza alertes per SMS, Slack, correu electrònic, Telegram, Kibana, Cloudwatch, etc.
- Assegura't de no registrar cap dada sensible com ara targetes de crèdit, contrasenyes, PINs, etc.
- Utilitza un sistema IDS i/o IPS per monitorar les teves sol·licituds d'API i instàncies.
- yosriady/api-development-tools - Una col·lecció de recursos útils per a la construcció de RESTful HTTP+JSON APIs.
- You don't need JWT, just use a randomly generated API key. If you need asymmetric encryption or tamper prevention, here are some alternatives to JWT.
- Implement sliding window rate limiting per API key and IP.
- Use exponential backoff for repeated failed authentication attempts.
- Implement CAPTCHA or proof-of-work challenges after suspicious activity.
- Monitor and alert on unusual API usage patterns (time, volume, endpoints).
- Disable introspection in production environments.
- Implement query depth limiting to prevent nested query attacks.
- Use query cost analysis to prevent resource exhaustion.
- Whitelist allowed queries in production when possible.
- Rotate API keys and secrets on a regular schedule.
- Use hardware security modules (HSM) for signing operations.
- Implement secret scanning in CI/CD pipelines.
- Never commit secrets to version control - use environment variables or secret managers.
- Implement mutual TLS (mTLS) for service-to-service communication.
- Validate all requests even from internal services.
- Use short-lived tokens with automatic refresh.
- Implement request signing for sensitive operations.
No dubteu a contribuir fent un fork d'aquest repositori, fent alguns canvis i enviant pull requests. Per a qualsevol pregunta envia'ns un correu electrònic a team@shieldfy.io.