Det er nu ganske fornuftigt. Med '...' + addslashes (direkte eller indirekte) forhindrer modifikation af SQL-sætningen, også når det er tal.
Men strengt taget bør man validere om det er et tal i PHP, hvis man nu forventer et tal - har man gjort det, er det ligegyldigt med '...'-erne
Synes godt om
Slettet bruger
22. juni 2003 - 23:39#12
Vi forventer at id er nummerisk og checker iøvrigt intet
En ond mand sætter id til NULL OR id LIKE %%
Og bliver super_user SELECT is_super_user FROM foo WHERE id = $_GET['id']
Det kunne han ikke gøre, hvis vi skrev SELECT is_super_user FROM foo WHERE id = '".$_GET['id']."'
Der er mange andre eksempler.
' ' omkring værdier alene nytter iøvrigt ikke, hvis vi glemmer at escape input.
Men det forhindrer sammen med inputvalidering, og escape af input sql injections.
Synes godt om
Slettet bruger
22. juni 2003 - 23:42#13
"SQL Injection is a technique which enables an attacker to execute unauthorized SQL commands by taking advantage of unsanitized input opportunities in Web applications building dynamic SQL queries."
Bare en tilfældig definition fra nettet. (De skriver Web applications. Men det kan jo være andre typer applikationer også.)
Synes godt om
Slettet bruger
22. juni 2003 - 23:46#14
erikjacobsens forklaring var vist mere præcis end min egen, men han er jo også uddannet i at formidle den slags :)
merkur8 >> ja og nej. det var din forklaring af injections der gjorde behovet for 'noget' klart. men jeg foretrækker godtnok ej's ide med at checke data først :-) anførselstengn er en lovlig 'smart' løsning.
Synes godt om
Slettet bruger
22. juni 2003 - 23:58#17
Så har jeg da lige et citat til :)
"Security in depth means protecting a page as best as you can, assumin other protections will fail." (Curphey, Mark et al. (2002))
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.