Jump to content
php.lv forumi

SQL injekcijas


Tanders

Recommended Posts

Sveiki!

Man tāds dīvains, varbut no skata stulbs jautājums - Vai mysql_num_rows() aizsargaa pilniiba no sql injekcijaam.

Esmu ieveerojis, ka pret sql injekcijaam ir speciaali paredzeetas funkcijas ,piemeram, mysql_real_escape_string(), stripslashes() un vēl citas.

 

Man ir login forma. Es speciali aizkomentēju visas pret sql injekcijām aizsargājošās funkcijas. Lūk daļa no koda.

 

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count==1){
session_register("myusername");
session_register("mypassword");
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}

 

Mēģinu jebkuru sql injekciju ievadīt, kura ļautu ielogoties, bet izlec šis errors:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\host\DB\Login\checklogin.php on line 23

Es tā sapratu, ka errors izlec tādēļ, ka manis radītais querijs izvēlas vairākus rowus.

 

Varbūt kāds var ieteikt kādu sql injekciju, kas apietu šo sistēmu? :D

Link to comment
Share on other sites

mysql_num_rows fjai nav nekāda sakara ar sql injekcijām.

mysql_query ir gan - tavā gadījumā tas ir atkarīgs no $tbl_name, $myusername un $mypassword mainīgo vērtībām (no kurienes tās dabūtas, kā apstrādātas, utt...)

A par to kļūdu - raksti kodu šādi: $result=mysql_query($sql) or die(mysql_error());

tad arī redzēsi, kur ir kļūda.

Link to comment
Share on other sites

SQL injekcija ir tad, kad tu izmanto nepārbaudītus un neapstrādātus parametrus SQL izteiksmes veidošanā. Piem.:

 

"SELECT * FROM tabula WHERE group_id = '" . $_GET['group_id'] . "'";

 

piem, ja $group_id ir

"1' AND '1' = '1"

, tad ...

Edited by Mr.Key
Link to comment
Share on other sites

"SELECT * FROM tabula WHERE group_id = '" . $_GET['group_id'] . "'";

piem, ja $group_id ir

"1' AND '1' = '1"

, tad ...

Nekas nenotiek ;) jo 1=1 ir true ;)

a ja AND vieta ieliktu OR ;) tad gan tas WHERE vairs nestradaatu --> tb atgriestu visus ierakstus ....

----

Lai padotu citu ID mysql_real_escape_string() nepaliidzees ;)

Link to comment
Share on other sites

×
×
  • Create New...