Ho questa tabella che contiene tutti i cookie degli utenti: (riguardo l'accesso. che in realtà è "ricordami di averlo controllato")
// cookies
+----+---------+-------------------+------------+
| id | user_id | token | expire |
+----+---------+-------------------+------------+
| 1 | 32423 | dki3j4rf9u3e40... | 1467586386 |
| 2 | 65734 | erhj5473fv34gv... | 1467586521 |
| 3 | 21432 | 8u34ijf34t43gf... | 1467586640 |
+----+---------+-------------------+------------+
E controllo entrambe le colonne user_id
e token
per convalidare un cookie:
SELECT 1
FROM cookies
WHERE user_id = :id AND
token = :token
Bene, ci sono 5 casi:
- riga esiste
- la riga non esiste perché
user_id = :id
è falso - la riga non esiste perché
token = :token
è falso - la riga non esiste perché sia
user_id = :id
chetoken = :token
sono false - la riga non esiste perché
user_id = :id
etoken = :token
sono true ma non nella stessa riga.
La mia domanda: quale caso è pericoloso e devo preoccuparmene? Quale non è importante e devo ignorarlo?
Ok, e questa teoria? "Non è necessario controllare la colonna user_id
:"
SELECT 1
FROM cookies
WHERE token = :token
Quindi ci sono solo due casi:
- riga esiste
- la riga non esiste perché
token = :token
è falso
E poi niente di sospetto. Quindi questa teoria è buona (sicuro) ?