Ik heb me de laatste tijd eens verdiept in wat een SQL injection eigenlijk is. Als je er wat meer van weet is het inderdaad wel vrij makkelijk om zo op een "beveiligde" pagina te komen of iemand z'n site compleet aan stront te helpen. Maar nu kom ik verschillende dingen tegen.
De functie mysql_real_escape_string() zou de ingevoerde $_POST[username] (o.i.d) checken.
Moet ik dat in dat geval dan ook voor het ingevoerde wachtwoord doen of maakt dat niet uit in dat geval?
De functie is_numeric() gaat volgens mij na of het ingevoerde/opgehaalde data slechts bestaat uit getallen, dus als je die gebruikt i.c.m mysql_real_escape_string ben je dus zo goed als beveiligd tegen de injections?
Daar word een soort van functie genoemd in de laatste post. Is dat beter/makkelijker of maakt dat niet uit?
En ik kwam ook tussen de zoekresultaten nog tegen htmlentities(), maar wat die nou precies met SQL Injections te maken had, nog niet helemaal duidelijk...
Iemand die me hier wat verder mee kan helpen want er staan aardig wat bomen voor het bos...
Met die ben ik ook begonnen, daar heb ik de eerste 2 functies om te beveiligen ook vandaan . Dus bij deze keur ik je artikeltje goed.
Maar als je verder gaat kijken op het web kom je nog tig andere functies/scriptjes tegen om de zaak te beveilingen. Dus ik vroeg me af wat er nu anders is aan die 2 easy as simple functies in je coding verwerken, of bijvoorbeeld dat ene scriptje uit het topic wat ik in de OP genoemd heb...
Ik veronderstel dan dat de functie die je hierboven noemt beter is? Omdat is_numeric() "over het algemeen" wel goed is. Of maakt dat vrij weinig uit?
En i.p.v $_POST kan ik ook zonder problemen een $_GET neerzetten op het moment dat het niet in de db gaat, maar eruit word gehaald? Omdat ik dat geval ook de database aangeroepen word.
Ik veronderstel dan dat de functie die je hierboven noemt beter is? Omdat is_numeric() "over het algemeen" wel goed is. Of maakt dat vrij weinig uit?
En i.p.v $_POST kan ik ook zonder problemen een $_GET neerzetten op het moment dat het niet in de db gaat, maar eruit word gehaald? Omdat ik dat geval ook de database aangeroepen word.
ik vind is_numeric persoonlijk beter, omdat je hier controleert of het een nummer is, het verschil is dat het je bij de 1 controleert of het ingegeven getal een nummer is en bij de methode die ik hier boven gaf dat je forceert dat het een getal word!
Wil je 1000% zekerheid dat het goed gaat dan pak je gewoon beide controles (maar dit is soms een beetje overbodig?)
Met die 2 functies is het dus mogelijk om een gemiddelde site te beveiligen tegen een SQL injection. Mooi dan weet ik dat
Oja, ik heb bij het registreren een functie die checkt of de opgegeven username bestaat uit letters, cijfers en een laag of liggend streepje. Ik neem aan dat die functie dus de rest van de tekens niet toelaat?
EDIT: De functie hiervoor heb ik uit een ledenscript gehaald die hier tussen de scripts staat.
Met die 2 functies is het dus mogelijk om een gemiddelde site te beveiligen tegen een SQL injection. Mooi dan weet ik datÂ
Oja, ik heb bij het registreren een functie die checkt of de opgegeven username bestaat uit letters, cijfers en een laag of liggend streepje. Ik neem aan dat die functie dus de rest van de tekens niet toelaat?
geen flauw idee, ik heb geen paranormale krachten dat ik vanaf hier in jou code kan kijken, maar zulke dingen zijn zelf ook gemakkelijk te controleren door gebruikersnamen op te geven die nergens op slaan.
geeft ook false. ctype functies returnen alleen true als het ook strings zijn. Post- en getdata worden ook als strings doorgegeven, dat scheelt dan weer
Neem aan dat mysql_real_escape_string() ook werkt als je er de inhoud van een textveld doorheen haalt?
Dus als je het echt vrij veilig voor elkaar wilt hebben haal je, zodra je iets in de database stopt de inhoud van je <input> even door zo'n functie of zie ik dat verkeerd?
Maar als ik dus de dingen controleer die de database ingaan, en de cookies die ik geset heb (voor het geval ze daar mee rotzooien), dan moet het in principe goed gaan? Grofweg gezegd dan