Forum » Izdelava spletišč » 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?
To da sem string spremenil v uppercase je samo zaradi moje potrebe, ne za preventivo.
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
Ne pa da delaš neke čirule čarule na parametrih.
$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
mysql_real_escape_string je namenjen prav zato, filter_input pa zato, da ne dostopam do globalnih spremenljivk direktno.
LP
Mesar ::
ne, Ne, NE!!!
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.
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 ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | PHP in objektno programiranje (strani: 1 2 )Oddelek: Programiranje | 12134 (10601) | kivi113 |
» | MySQL Query VprašanjeOddelek: Izdelava spletišč | 3227 (2992) | overlord_tm |
» | Spletna videotekaOddelek: Programiranje | 3889 (3079) | nuclear |
» | [php] Knjiga gostovOddelek: Izdelava spletišč | 3168 (2371) | darix |
» | [php, mysql] sortiranje izpisa iz bazeOddelek: Izdelava spletišč | 2692 (2211) | Binji |