La seguretat de la botiga
Una botiga pública és una altra cosa que un portal de clients. Al portal només hi entren clients teus; aquí hi entra internet sencer, i bona part del que truca a la porta no és un client.
Això és el que hi ha posat. No cal que configuris res: ve actiu.
Contra el robatori de sessió
Testimoni anti-CSRF en tot el que canvia alguna cosa. Cada formulari porta un testimoni únic del visitant. Un formulari muntat en un altre web que apunti a la teva botiga no el té, i es rebutja.
Es comprova d’on ve la petició. Si un enviament arriba des d’un altre lloc, no s’atén, porti la galeta que porti el navegador.
Les galetes de sessió són HttpOnly, Secure i SameSite=Lax. No es poden llegir des de JavaScript, no viatgen sense HTTPS i no s’envien quan la petició ve de fora.
La sessió es comprova sencera. No n’hi ha prou amb el número del client a la galeta: ha de quadrar a més la clau de sessió que es va desar en entrar. Canviar el número a mà no serveix de res.
Contra el provar contrasenyes
Vuit intents i quinze minuts d’espera. Es compten per IP i per IP més correu alhora: així ni es poden provar mil contrasenyes d’un compte, ni recórrer mil comptes des d’una mateixa IP.
Se li diu quants n’hi queden. «Et queden 5 intents». Un client despistat no s’espanta i sap a què atenir-se.
Avís per correu en esgotar-los, amb la IP, el correu que s’estava provant i l’hora. Un de sol per IP i finestra: si estan provant en bucle, no cal un correu per intent. El destinatari es configura al mòdul; buit, el de l’empresa.
El mateix missatge falli el correu o la contrasenya. Si canviés segons si l’adreça existeix, la mateixa pantalla aniria dient quins clients tens donats d’alta.
El mateix val per recuperar la contrasenya: es contesti el que es contesti, el missatge és «si aquell correu té compte, li hem enviat una contrasenya nova».
Contra la manipulació de preus
Cap import es calcula amb el que envia el navegador. El preu es rellegeix del catàleg i els totals els calcula el motor de GestioERP, el mateix que fa servir qualsevol factura. Qui manipuli l’HTML no canvia l’import.
Una línia de la cistella només es toca si és de la cistella de qui ho demana. Sense això, canviant un número a l’adreça es podria buidar la cistella d’un altre.
Capçaleres del navegador
| Capçalera | Què impedeix |
|---|---|
X-Content-Type-Options: nosniff | Que un fitxer s’executi com una cosa que no és |
X-Frame-Options: SAMEORIGIN | Que posin la teva botiga en un marc dins d’un altre web |
Referrer-Policy | Que es filtri on anava el client |
Cache-Control: no-store | Que la cistella o el compte quedin desats |
L’aparador sí que es deixa cachejar —és igual per a tothom i així vola—; la cistella i el compte, mai.
Les dades del client
Es desa el necessari per preparar la comanda i emetre la factura, i res més. La botiga no desa números de targeta: el pagament es fa a la passarel·la, i de tornada només arriba si va anar bé o no.
El que continua a la teva mà
- Tingues la botiga en HTTPS. Sense això, la resta importa menys.
- Posa un correu d’avisos que algú llegeixi.
- Revisa de tant en tant els clients del web: si hi apareixen altes estranyes en bloc, alguna cosa passa.