» »

php funkcij/ prevent sql injection

php funkcij/ prevent sql injection

sebavet ::

Kaj menite o teh dveh funkcijah. Če uporabnikov input (string) spustim skozi katero od teh dveh funkcij, ali bo to dovolj za preventivo sql injection in cross site scripting?

function cut_all ($a)// poreže znake, space in spremeni v uppercase
{
$a=preg_replace("/[^A-Za-z0-9螚ȎŠ ]/", '', $a);
$a=str_replace(' \t\n\r\0\x0B', '', $a);
$a=strtoupper($a);
return $a;
}

function cut_nospace ($b)// poreže znake in spremni v uppercase
{
$b=preg_replace("/[^A-Za-z0-9螚ȊŽ ]/", '', $b);
$b=strtoupper($b);
return $b;
}


To da sem string spremenil v uppercase je samo zaradi moje potrebe, ne za preventivo.

Senitel ::

? SQL injection se izogneš tako, da uporabljaš prepared statemente in ne delaš bedarij ala
$sql = "select * from blabla where name = " . $userinput;

Ne pa da delaš neke čirule čarule na parametrih.

nyler ::

Če te zastopim... js uporabljam kobinacijo $a=mysql_real_escape_string(filter_input(input_post/get,'htmlvar')).
mysql_real_escape_string je namenjen prav zato, filter_input pa zato, da ne dostopam do globalnih spremenljivk direktno.

LP

Mesar ::

ne, Ne, NE!!! 8-O:(

v php imaš funkcije namenjene posebej temu, recimo:

http://php.net/manual/en/function.mysql...
http://php.net/manual/en/function.htmls...

drugače pa za SQL injection moreš načeloma eskepat samo single quot ', pod pogojem, da vse query pišeš stritkno, drugače ti še vedno lahko nekdo injecta recimo..

"SELECT id FROM tabelca WHERE neki = ".$_GET['lol']." LIMIT 1;"

če imaš $_GET['lol'] = 1 dobiš

SELECT id FROM tabelca WHERE neki = 1 LIMIT 1;

če imaš $_GET['lol'] = 1; DROP TABLE tabelca; -- dobiš ...

SELECT id FROM tabelca WHERE neki = 1;
DROP TABLE tabelca;

te stvari "napadalci" potem kombinirajo še z urlencode in podobnimi zadevami v upanju, da si naprej površno escapal string in potem spustil če urldecode...

načeloma zgornji primer že zakompliciraš če dodaš ' (single quot)

in nato striktno eskejpaš ' (single quot) in paziš, da zadeve za tem več ne procesiraš z kakšnim urldecode, ki ti nove single quote noter naserje...

Obstaja pa tudi kak PDO. Pri XSS je podobna zgodba le drugi znaki (tisti za JavaScript) ne da se mi zdajle romanov pisat.
Your turn to burn!

Zgodovina sprememb…

  • spremenil: Mesar ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

PHP in objektno programiranje (strani: 1 2 )

Oddelek: Programiranje
8511919 (10386) kivi113
»

MySQL Query Vprašanje

Oddelek: Izdelava spletišč
153159 (2924) overlord_tm
»

Spletna videoteka

Oddelek: Programiranje
243851 (3041) nuclear
»

[php] Knjiga gostov

Oddelek: Izdelava spletišč
293137 (2340) darix
»

[php, mysql] sortiranje izpisa iz baze

Oddelek: Izdelava spletišč
262631 (2150) Binji

Več podobnih tem