Raaoul schreef:Mac ook gewoon lekker voor scripting hoor, geef eens argumenten Rik
Maartenl schreef:Eerdere citaten tonen
Eleky schreef:Eerdere citaten tonen
[COLOR= #0000BB]<?[/COLOR]
mysqli_query[COLOR= #007700]([/COLOR][COLOR= #DD0000]"INSERT INTO one2xs (naam,pass) VALUES ("[/COLOR][COLOR= #007700].[/COLOR]mysqli_real_escape_string[COLOR= #007700]([/COLOR]htmlentities[COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]naam[/COLOR][COLOR= #007700]])).[/COLOR][COLOR= #DD0000]", "[/COLOR][COLOR= #007700].[/COLOR]mysqli_real_escape_string[COLOR= #007700]([/COLOR][URL="http://www.php.net/sha1"]sha1[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]pass[/COLOR][COLOR= #007700]])).[/COLOR][COLOR= #DD0000]")"[/COLOR][COLOR= #007700])[/COLOR]or [URL="http://www.php.net/die"]die[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]Er ging iets mis![/COLOR][COLOR= #007700]);[/COLOR]
?>
Dit is een vrij slecht voorbeeld, hier klopt helemaal niks van.
Je gebruikt htmlentities in een query, terwijl dat puur is voor echoën
Daarnaast gebruik je real escape string op een sha ecyptie, als je iets encrypt kan het geen injectie meer zijn dus onnodig
Ik vind het beter in de input, omdat je dan maar 1x moet doen, bij het echoën meerdere keren.
mysql(i)_real_escape_string zet ik er gewoon altijd op
Ja, en als je dan een bericht wil editten waar speciale tekens in staan ( <, >, &) dan ga jij bij het editvakje & e.d. krijgen of je moet weer gaan kloten om het te veranderen.
Htmlentities dus alleen bij het echoën doen.
Dylanh schreef:Eerdere citaten tonen
Aarclay schreef:[COLOR= #0000BB]<?php
$result[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT * FROM persoon WHERE achternaam = "[/COLOR][COLOR= #007700].[/COLOR][URL="http://www.php.net/mysql_real_escape_string"]mysql_real_escape_string[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]achternaam[/COLOR][COLOR= #007700]]).[/COLOR][COLOR= #DD0000]""[/COLOR][COLOR= #007700]);[/COLOR]
?>
Aha, bedankt. En als je bijv dit hebt;
[COLOR= #0000BB]<?php
$user[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_SESSION[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]username[/COLOR][COLOR= #007700]];[/COLOR]
[URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]SELECT * FROM iets WHERE username= $user[/COLOR][COLOR= #007700]);[/COLOR]
?>
Waar moet dan de mysql_real_escape_string? Bij $user of in de query?
Er vanuit gaande dat je bij het registreren al checkt op speciale tekens in de naam, is het niet nodig om sessies te escapen omdat de gebruiker sessies niet kan aanpassen. Zoniet dan kan beide. Zorg dan wel dat je de vars buiten je quotes haalt:
[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT * FROM iets WHERE username= "[/COLOR] [COLOR= #007700].[/COLOR] [URL="http://www.php.net/mysql_real_escape_string"]mysql_real_escape_string[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_SESSION[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]username[/COLOR][COLOR= #007700]]) .[/COLOR] [COLOR= #DD0000]""[/COLOR][COLOR= #007700]);[/COLOR]
?>
$_GET, $_POST en $_COOKIE zijn eigenlijk de enige die je moet escapen, tenzij je niet weet wat je in $_SESSION variabelen zet. Maar dat is onlogisch.
Bovendien is het opslaan van een username in een session erg onhandig. Stel je voor dat je je naam wil wijzigen.. Gebruik liever een $_SESSION[id] o.i.d. om te kijken welke gebruiker ingelogt is.