Bug-ul săptămânii · 19 octombrie 2026
Verificarea de redirect care are încredere în slash-ul de la început
Redirect-ul de după login într-un API Express · Securitate · dificultate 1/3
După un login reușit, API-ul îl trimite pe utilizator înapoi la pagina pe care o ceruse inițial. Destinația vine dintr-un parametru de query ?next=, deci e controlată de utilizator. Un coleg i-a cerut asistentului AI: „Scrie resolveRedirect(target, fallback) pentru endpoint-ul nostru de login. Permite redirect doar spre pagini de pe site-ul nostru; orice altceva trebuie să meargă la fallback.”
Codul a venit cu teste care trec. Contractul promis de docstring:
resolveRedirect(target, fallback)returneazătargetcând e o cale locală de pe acest site șifallbackîn rest.- Un
targetlipsă, gol sau format doar din whitespace duce la fallback. - URL-urile absolute spre alte hosturi (
https://evil.example) nu trebuie returnate niciodată. isLocalPath(url)este predicatul din spate:truedoar pentru căile pe care browserul le va rezolva pe originea curentă.
Ține minte cum interpretează un browser un header Location: nu caută doar http://. Fă review codului înainte să ajungă în producție.
Dă clic pe linia (sau liniile) cu defectul, alege categoria, apoi trimite. Cu tastatura: săgețile ca să te miști, Space ca să marchezi. În acest mod codul nu poate fi editat.