$_POST['naam'] veilig uitlezen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ki ma

ki ma

06/12/2010 19:08:11
Quote Anchor link
Dit voor eens en voor altijd op te lossen.
Ik heb een <form> <input id='naam' value=''/> </form>

Nu ga ik hem uitlezen:
$name = mysql_real_escape_string(addslashes($_POST['naam'])) ;

Is dit voldoende om je $name te beschermen?
Of is alleen mysql_real_escape_string(); al wel voldoende om narigheid tegen te gaan?
 
PHP hulp

PHP hulp

22/09/2021 09:33:05
 
Maarten PHP

Maarten PHP

06/12/2010 19:10:44
Quote Anchor link
volgens mij alleen mysql_real_escape_string(); al genoeg
 
Wouter J

Wouter J

06/12/2010 19:17:51
Quote Anchor link
mysql_real_escape_string() is inderdaad al genoeg.
 
Noppes Homeland

Noppes Homeland

06/12/2010 19:32:27
Quote Anchor link
Je dient
1. geen overbodige variabelen aan te maken
2. mysql_real_escape_string pas je alleen toe in ene SQL statement en nergens anders
 
- SanThe -

- SanThe -

06/12/2010 20:13:28
Quote Anchor link
Verder zal $_POST['naam'] niet bestaan omdat je input geen 'name' attribuut heeft.
 
Gerben pHp

Gerben pHp

06/12/2010 21:35:12
Quote Anchor link
Ook wel interessant:
http://www.byte.nl/docs/Php-Sql-Injection.html

Hierin staat dat mysql_real_escape_string en addslashes allebei kunnen worden gebruikt, maar er staat niet dat je ze beiden moet gebruiken ;)

En ook nog iets over het voorbereiden van een sql opdracht :O
 
Ki ma

ki ma

06/12/2010 23:06:27
Quote Anchor link
@santhe
'id' moet 'name' zijn =)

@noppes
Maar als ik nu $name weer mee wil laten sturen in een $_GET, dus niet ga gebruiken voor SQL, is $name = mysql_real_escape_string($_POST['naam']) ook goed?

<form> <input name='naam' value=''/> </form>

//uitlezen
$database_server = mysql_connect("*", "*", "*");
mysql_select_db("*", $database_server) ;

$name = mysql_real_escape_string($_POST['naam']) ;

$link = '<a href="http://www.domein.nl/index.php?naam='.$name.'" >Link naar naam</a>' ;
echo $link ;
Gewijzigd op 06/12/2010 23:09:58 door ki ma
 
Pim -

Pim -

06/12/2010 23:18:45
Quote Anchor link
Er is niet zoiets als een 'veilige variabele'. Variabelen zijn veilig in een bepaalde context. Zo is een var in SQL pas veilig na mysql_real_escape(), een andere escape functie of prepared statements, maar in html pas veilig na htmlentities().
In XML pas in een CDATA blok en zo voorts...

Verder is addslashes mijns inziens alleen nuttig wanneer deze slashes je data niet vervuilen, zoals in Javascript.
 
Kris Peeters

Kris Peeters

07/12/2010 10:03:44
Quote Anchor link
Het is voldoende je te beschermen tegen injection.
mysql_real_escape_string (of eventueel mysql_escape_string) zorgt er voor dat er geen verrassingen zijn bij het inserten van data.

Probeer je data verder zo puur mogelijk op te slaan in je database.

Jij moet dan wel telkens je data beschermen bij het uitlezen (SELECT * ...). Dat gaat dan weer om andere problemen, zoals html elementen die men probeert tussen de berichten te steken. Die kunnen bv. ook javascript bevatten.

Dit kan met strip_tags(). Ook stripslashes() zal je waarschijnlijk nodig hebben.

Nog iets: casten.
Indien je weet dat iets een integer moet zijn, cast het dan. Bv. $_POST['aantal'] = (int) $_POST['aantal'];
Het ergste wat dan kan gebeuren, is dat je een 0 krijgt, indien het geen getal is.
Gewijzigd op 07/12/2010 14:11:01 door Kris Peeters
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.