Just nu i M3-nätverket
Gå till innehåll

mysql_real_escape_string


mindsleep

Rekommendera Poster

Har precis upptäckt att mitt webbhotell kör med magic_quotes=1.

 

Så det första jag gör då jag får ett formulär så strippar jag bort slashar:

$namn=stripslashes($_POST['name']);

 

Nästa steg för att förhindra SQL injections är att köra mysql_real_escape_string()

$namn=mysql_real_escape_string($namn);

 

Men när jag tittat i databasen efter att ha matat in följande i namn fältet:

' test "

 

Så finns det varken slashar eller dyl. Det står så i databasen ' test ".

 

Men så ska det väll inte vara? Eller minns jag fel? Ska det inte stå: \' test \"

 

Jag har ju kört mysql_real_escape_string().

 

 

//MVH Mindsleep

 

I am who i am, you are who you are, i respect that

 

[inlägget ändrat 2008-12-17 02:53:52 av mindsleep]

Länk till kommentar
Dela på andra webbplatser

Du har nog gjort en tankevurpa. Det ska vara som det du ser i databasen... Du escapear ju inte för att databasen ska innehålla extra backslashar utan för att databasen ska innehålla precis det du skickar in och inget annat.

 

För att lagra värdet 'test i databasen så behöver du escapea fnutten i SQL-satsen så att det ser ut ungefär så här:

INSERT INTO datat (kolumn) VALUES ('\'test');

 

Det talar om för SQL-tolken att strängen inte är slut när den kommer till ' innan test (vilket ju är det som utnyttjas vid SQL injections). Väl i databasen är det ju 'test du vill lagra, inget annat.

 

 

Länk till kommentar
Dela på andra webbplatser

Jo, jag hade en tankevurpa. Jag kom på det senare.

 

Jag hade dock fått för mig att jag tidigare lagrat \' i databaser...men jag tror jag inte använda mysql_real_escape då.

 

Tack i alla fall för svaret och GOD JUL! fhe

 

//MVH Mindsleep

 

I am who i am, you are who you are, i respect that

 

Länk till kommentar
Dela på andra webbplatser

Jag hade dock fått för mig att jag tidigare lagrat \' i databaser

Det brukar bli effekten om man gör rätt och använder någon form av quotning och driftar på en server med magic quotes utan att man vet om det.

 

Edit: God jul själv förresten.

[inlägget ändrat 2008-12-22 11:53:41 av fhe]

Länk till kommentar
Dela på andra webbplatser

Det brukar bli effekten om man gör rätt och använder någon form av quotning och driftar på en server med magic quotes utan att man vet om det.

 

Ja, jag var tvungen att strippa bort alla / vid ustrkrift. Vilket var besvärligt.

 

Bättre nu och enklare med mysql_real_escape då jag inte behöver göra så mycket förutom att strippa bort slashes före körning av mysql_real_escape eftersom min webhost envisas med att ha magic_quotes=On!!!

 

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.



×
×
  • Skapa nytt...