Just nu i M3-nätverket
Jump to content

mysql_real_escape_string


mindsleep

Recommended Posts

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]

Link to comment
Share on other sites

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.

 

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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!!!

 

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...