ugrás a tartalomhoz

Biztonsági kérdés

Anonymous · 2005. Jan. 18. (K), 13.58
Sziasztok!

Amatőr szinten készitgetek egy oldalt PHP és MySQL használatával. Ez ügyben szeretném kérni a hozzáértők segitségét egy biztonsági kérdésben:

Pl. ilyen az egyik megoldásom:
---------------------
<?php
$sqlparancs="SELECT * FROM felhasznaloi_adatok WHERE login_nev = $nev AND login_pass = $jelszo ";
$eredmeny=mysql_query($sqlparancs, $kapcsolat);
// ide jön a php kód többi része...
?>
<form name="login" method="post" action="<?php print($PHP_SELF); ?>">
<input type="text" name="nev" size="10">
<input type="password" name="jelszo" size="10">
<input type="submit" name="Submit" value="Belépés">
</form>

----------------
A profik szerint itt biztonsági rés van. Amivel könnyen meg lehet tenni bármit az adatbázisommal, vagy ki lehet listázni a PHP kódot és hasonlók.
Én ezzel próbálkoztam, trükközgettem, de egy MySQL szintaktikai hibán kívül nem tudtam mást elérni. Én nem értek hozzá annyira hogy ennél többet el tudjak érni.
Szóval hogy lehet a fenti kódon keresztül az adatbázisomat módosítani vagy egyéb dolgokat megtenni? Ahhoz hogy tenni tudjak ellene, előbb jó lenne ismerni a biztonsági rés kihasználásának módjait is.

Köszönettel:
Vadmancs
vadmancs##kukac##uze.net
 
1

A truck :)

sajt · 2005. Jan. 18. (K), 15.26
A trukk a kovetkezo pld.:
A jelszonak valaki a kovetkezot irja:
valami";select * from felhasznaloi_adatok;

vagy valami ilyesmi. Tehat ilyenkor a le tud futtatni sql parancsokat pluszban.
6

A trukk a kovetkezo pld.: A

Anonymous · 2005. Jan. 20. (Cs), 14.38
A trukk a kovetkezo pld.:
A jelszonak valaki a kovetkezot irja:
valami";select * from felhasznaloi_adatok;

Ez nekem is eszembe jutott, de tudomásom szerint a PHP mysql_query parancsa csak 1 db MySQL utasítást enged lefuttatni, kulönben simán szintaktikai hibával megáll.
http://docs.php.net/hu/function.mysql-query.html
Itt fel is van tüntetve hogy nem lehet benne ";"-ő, pedig ez lenne ami leválasztja egymástól a MySQL utasításokat - ha jól tudom.

Vadmancs
vadmancs##kukac##uze.net
2

védekezés

Poetro · 2005. Jan. 18. (K), 15.44
Először is a legjobb, ha minden bejövő adatot levizsgélsz, hogy ilyet vársz-e.
Ha nem akarsz nagyon körmönfont lenni, akkor minden ilyen esetben használod a php addslashes függvényét, ami a különböző idézőjeleket bekódolja neked, így csak mint adat tudnak majd szerepelni.
--------
Poetro
3

Biztonsági kérdés

csk0 · 2005. Jan. 20. (Cs), 00.20
A PHP dokumentációjában található erről információ:

http://docs.php.net/hu/security.database.html

Üdv, csko
4

A WFSZ biztonsági ajánlásai webfejlesztők számára

pp · 2005. Jan. 20. (Cs), 07.41
No meg itt is:

http://wfsz.njszt.hu/projektek_biztonsag.php

pp
5

Köszönöm a sok segitséget

Anonymous · 2005. Jan. 20. (Cs), 13.03
Köszönöm a sok segitséget, így már jó lesz!

Vadmancs
vadmancs##kukac##uze.net
7

azert azt tegyuk fel, hogy ez

zedorg · 2005. Jan. 27. (Cs), 02.30
azert azt tegyuk fel, hogy ezt te is igy irtad:
login_pass = '$jelszo' csak lemaradt a ' ' a beirasodkor:) stringeket ugye mindig valami koze rakunk. nade ekkor is, ha nem csinalsz semmit, egy $jelszo="' or '1'='1"; ertekkel kapasbol benyel barmit a lekerdezesed. "... login_pass = '' or '1'='1' ..." lesz ugye belole.