WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Lyckas inte få bort %22 från sträng i PHP (https://www.wn.se/forum/showthread.php?t=8375)

Lukas 2005-06-08 14:31

Jag har ett antal php-skript som tar emot GET-argument som den skickar till mySQL. För att minska risken för SQL-injektioner kör jag dessa GET-strängar genom en funktion som tar bort tecken i stil med ' och "
Men jag lyckas inte få min funktion att ta bort %22 från strängen, trots att jag försöker få den att filtrera bort "%"
Kod:

function safe_text($text)
{
        $bad_chars = array("\$","\"","\'","%","&","<",">");
        $text = str_replace($bad_chars, "", $text);
        return $text;
}

Anledningen till att jag undrar om just %22 är att jag just körde ett säkerhetstest (Nessus) som varnade mig för potentiella sql-injektioner i form av /dir/filnamn.php?argument='%22

grazzy 2005-06-08 14:40

$text = preg_replace("/["'`]*/",'',$text); känns lite enklare.. (ja du får ju fylla på själv med tecken).

David 2005-06-08 14:47

Varför inte använda PHP:s egen funktion mysql_escape_string()?

Standout 2005-06-08 15:45

Du kan ju köra med

$text = urldecode($text);

grazzy 2005-06-08 15:48

Jo men nu handlar det ju om att få bort backtick, jag vet inte om nån av de där tar bort den faktiskt?

danjel 2005-06-09 15:09

addslashes() ...?

fasko 2005-06-12 21:34

Om du vill skydda dig mot SQL-injektioner är mitt tips att kolla på
http://se2.php.net/mysql_real_escape_string


Alla tider är GMT +2. Klockan är nu 09:35.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson