Mennyire biztonságos beléptetés?
Sziasztok!
A kérdésem az lenne, hogy egy ilyen kód mennyire biztonságos beléptetésnek? Vagy mik a gyenge pontja, mit hagytam ki? Azt még hozzáfűzöm, hogy nem egy meghirdetett oldalon lenne, tehát csak fix IP alapján lenne elérhető. Válaszaitokat előre is köszönöm. És akkor a kód:Üdvözlettel: Viktor
■ A kérdésem az lenne, hogy egy ilyen kód mennyire biztonságos beléptetésnek? Vagy mik a gyenge pontja, mit hagytam ki? Azt még hozzáfűzöm, hogy nem egy meghirdetett oldalon lenne, tehát csak fix IP alapján lenne elérhető. Válaszaitokat előre is köszönöm. És akkor a kód:
<?php
if (isset($_POST['azonosito']))
{
$kapcsolat=mysql_connect("1.2.3.4", "user", "pwd");
if ( !$kapcsolat) die ("Nem lehet létrehozni a kapcsolatot!<BR>");
else {
mysql_select_db( "adatbazis", $kapcsolat ) or die ( "Nem található az adatbázis, vagy sérült." );
$lekerdezes="SELECT * FROM felhasznalok where azonosito='" . $_POST["azonosito"] . "'";
$eredmeny=mysql_query($lekerdezes);
$sor = mysql_fetch_row( $eredmeny );
session_start();
if ($sor[1]==$_POST['pass'] and $sor[1]!='') //a jelszó nem lehet üres sztring!!
{
$sor[1]=""; //a pass változó törlése, hogy ne maradjon a session-ben
session_register('sor'); //csak azután regisztrálom, miután a pass-t kitöröltem !!
session_register('auth');
$_SESSION['auth']=1;
//ezután a kívánt oldal betöltése
}
else
{
session_unset();
session_destroy();
//kiirni, hogy nem tudtál bejelentkezni
}
}
}
else
{
$_SESSION['auth']=0;
//utána vissza a kezdőoldalra
?>
hibák
2,
session_register('sor');
session_register('auth');
$_SESSION['auth']=1;
Használd a többi session válozó felvételéhez is a $_SESSION tömbbőt:
$_SESSION['sor'] = $sor[1]
3,
Regisztrációnál szűrni kell, hogy ne legyen két azonos azonosító.
4,
php-ben a többök indexelése 0-val, és nem 1-el kezdődik.
5,
php dokumentációban tippként szerepel, hogy az sql kapcsolat adatait lehőleg ne a root-ba, hanem egy könyvárral lejebb tároljuk.
6,
session_start -ot érdemes a lap elején elindítani, és én még pufferelném a kimenetet is.
PHP a frontvonalon, védekezés a bemeneten
PHP a frontvonalon, védekezés a bemeneten
Huhúúú
Hagyján, hogy bármit ki lehet törölni az adatbázisodból ezen zseniális kód miatt, még bárki, jelszó nélkül is beléphet...
Elég veszélyes ez a PHP, hogy 10 sorban ennyi hülyeséget tudsz leírni :)
Nem kell leszolni
<Nincs cím>
A hülyék védelmében
A hülyék képviseletében?
D.
http://e-arc.hu/
<Nincs cím>
(nyugi, téged is megvédelek kedves névtelen idegen)
<Nincs cím>
Kicsit az tűnik nekem meredeknek így elsőre, hogy session-ben kitolod a jelszót.. meg hát ugye, hogy semmi md5 és hasonló - bár én az adatbázisba való tárolásra esküszöm... Szerintem azt nem érdemes kézpénznek venni, hogy a sessionváltozókhoz úgysem fér hozzá senki - mert ugye volt már ilyen a világtörténelemben. Meg aztán a session lopás - na az ellen nem véd. Meg a kód végén hiányzik egy "}", de gondolom az eredetiben benne volt, mivel hibát okozna... :)
üdv, Halee
<Nincs cím>
Amúgy meg inkább itt derüljön ki a hiba, mint "élesben"!
---
Könnyebb valamit jól megcsinálni, mint megmagyarázni, miért lett rossz.
-
IP-vel az a gond, hogy pl. az egyre terjedő otthoni routerek mögül, vagy céges környezetből, stb. jövő userek mind egy IP-t kapnak (gy.k. nem lehet tudni, egy routerhez ki tartozik).
A megnövelt élettartamú sessionök (akár session.cookie_lifetime, akár session_set_save_handler()-rel saját sesikezelés) adhatnak egy megoldást, HTTPS-sel megfejelve egy kicsit jobbat, és arra még én is keresem a választ, milyen a visszatérő látogatók ideális felismerése, azonosítása. :)
D.
http://e-arc.hu/
félreértettél
De az ipvel félreértettél. Nem azt mondtam, hogy pusztáln IP alapján azonosítsunk usereket, hanem alapszintű védelmet ad session hijacking támadások ellen.
---
Könnyebb valamit jól megcsinálni, mint megmagyarázni, miért lett rossz.
<Nincs cím>
ID: 28
HASH: 60591f84a283bdefbdc6dee6022b31d6
Ezt pedig minden oldalbetöltődésnél tudod ellenőrizni:
// érvényes session, azonosítható az ID-vel
}
Üdvözlettel: Liebig Zsolt
SWEN INTERNET
Köszönet
A jelszót törlöm, miután leellenőriztem, és nem hagyom a sessionben. Az ip, felh.név, stb. dolgok meg maradnak benne. (persze csak ami nem igényel biztonsági megfontolásokat.)
Azt hogy kell érteni, hogy jelszó nélül is be lehet lépni?
A többit meg nem kérdezem meg, inkább utánanézek :)