Php - session - mennyire biztonságos?
2005-06-09T15:18:49+02:00
2007-11-05T21:51:24+01:00
2022-07-19T05:22:59+02:00
  • Nem tudja, a kliens gépén csak a session_id van "eltárolva".
    Mutasd a teljes hozzászólást!
  • tényleg :D
    Mutasd a teljes hozzászólást!
  • link
    Egyébként 2 éves hozzászólásra válaszoltál.
    Mutasd a teljes hozzászólást!
  • na ja .. pl:

    $uJelszo = "' OR 'A'='A'";
    Mutasd a teljes hozzászólást!
  • pontosan mire gondoltál amikor azt írtad, hogy sql utasításokat is belevarrhat a jelszó sztringbe? Mert ha így áll a lekérdezésben, hogy:
    "SELECT ... jelszo = '$uJelszo'"

    akkor hiába írsz ide sql utasításokat, azt nem fogja értelmezni a fordító! Nincs igazam?
    Mutasd a teljes hozzászólást!
  • Sziasztok!

    Csak egy egyszerű kérdésem van, ezért nem indítottam új témát.

    Készítek egy oldalt, ahol a felhasználók különböző jogokkal rendelkeznek. Belépéskor egy session változó értékét true-ra állítok, ami azt jelzi, hogy a felhasználó be van-e jelentkezve és egy másik változóba pedig beleírom, hogy melyik jogosultságosztályba tartozik. (Valamint ezeken kívül a felhasználónevét).

    A további oldalakon csak ezeknek a session változóknak az értékét ellenőrzöm.
    Pl.: ha a fórumba csak bejelentkezett felhasználók írhatnak, akkor az uj_post.php fájl elejére ezt írom:
    if(!$_SESSION['bejelentkezve']) header("Location: valami.php");

    A kérdésem az, hogy a felhasználó tudja-e módosítani a session változók értékét, mert ebben az esetben nem elég ez az ellenőrzés?

    Ha ez nem elég biztonságos, akkor mit javasoltok?

    Előre is köszönöm a válaszokat!
    Mutasd a teljes hozzászólást!
  • Szoval te ugy erted, hogy $_SESSION['foo'] = true; utanna pedig if (session_is_registered("foo")) { ... }? Mert ha igen ez igy nem fog menni.. Vagy a $_SESSION tombos megoldast alkalmazod vagy a session_register-est.. De manualban levannak irkalva, hogy mit szabad mit nem, melyiket hol lehet hasznalni..
    Mutasd a teljes hozzászólást!
  • ezt azért megkérdő jelezném.
    Nálam be van kapcsolva a register.
    És amikor megadtam a egy session változóját (sőt még értéket is adtam neki hogy úgy vegye hogy be vagyok jelentkezve) semmi... visszadobta az azt hogy nem vagyok bejelenetkezve.

    remélem érthető volt...
    vagy csak én rontottam el valamit... légyszi Te is nézz utánna (ha érdekel)

    Szia
    Mutasd a teljes hozzászólást!
  • Ugyan az..
    Marmint ugyanazt ered el mintha $_SESSION['loginnev']-et alkalmaznad, tehat ugy biztonsagos..
    Mutasd a teljes hozzászólást!
  • ehhez csak annyit tennék hozzá, hogy:
    if (session_is_registered("loginnev")) { header("Location:adminlogin.php"); }
    és akkor tök mind1, hogy be van-e kapcsolva a register global... vagy nem jól gondolom???
    Mutasd a teljes hozzászólást!
  • Köszönöm szépen!

    És főleg a válaszokat!
    Mutasd a teljes hozzászólást!
  • Átteteted a társalgóba és nincs sértődés
    Mutasd a teljes hozzászólást!
  • Hmm!

    A válaszokat nagyon köszönöm!
    Ebből tanulok tényleg! De hogy a pontot hova adjam, arról most sajnos fogalmam sincs, mivel mindenkitől, aki hozzászólt értelmes és egy, vagy több hibát kiküszöbölő választ kaptam!

    Félreértés ne essék, de én a pontot ax-nek adnám! De várok kicsit, vagy megkérdezek egy operátort, hogy ilyenkor mi is a helyzet!

    Legszívesebben köztetek szétosztanám a pontokat, ha lehetne!
    Mutasd a teljes hozzászólást!
  • És itt majd mire adsz pontot?
    Mutasd a teljes hozzászólást!

  • <?php
    session_start();
    if(!isset($_SESSION['loginnev'])){
    header("Location:adminlogin.php");
    }
    ?>
    Mutasd a teljes hozzászólást!
  • Hi!

    Elso pillantasra nekem ez szurja a szememet:
    $eredmeny = mysql_query("SELECT * FROM admin WHERE login_nev = '$uNev' && jelszo = '$uJelszo'");

    Ez igy nekem nagyon nem tetszik. Gondolj arra, hogy ebben a formaban a kedves juzer a $uJelszo valtozoba azt ir, amit akar... az SQL utasitasokat is belee'rtve! Igy modosithatja az egesz lekerdezest, es gyakorlatilag jelszo nelkul is belephet.
    Ajanlom, h. tegyel a stringek ele idezojeleket, es hogy megakadalyozd ezeknek bezarasat, az input stringet erdemes keresztultolni egy addslashes()-en vhogy igy:

    $eredmeny = mysql_query("SELECT * FROM admin WHERE login_nev = \" ".addslashes($uNev)." \" && jelszo = \" ".addslashes($uJelszo)." \" ");
    (remelem, jol szerkesztetettem, ez a pici forraskodszerkeszto ablak eleg kenylmetlen...)

    Have a lot of fun!
    Udv. ax
    Mutasd a teljes hozzászólást!
  • <?php session_start(); if(!isset($loginnev)){ header("Location:adminlogin.php"); } ?>

    Ezt ugy modositanam, hogy if(isset($_SESSION['loginnev'])) mert ha a register globals on akkor az okos ember azt csinalna, hogy xy.php?loginnev=1 es akkor mar be is van jelentkezve..
    Mutasd a teljes hozzászólást!
  • Sziasztok!

    Csináltam egy beléptetőrendszert php-ban! a loginnév/jelszó egy adatbázisban van eltárolva! Kérdésem az volna, hogy mennyire bízhatok meg ebben a technológiában, illetve ez a kód, amit szerkesztettem kijátszható, megkerülhető, vagy alapban hibás?

    A bekért adatok egy űrlapból jönnek (admin.php : uNev, uJelszo). Ezeket elküldöm egy login.php-nek, ami leviszgálja hitelességüket

    ---------login.php---------
    <?php
    session_start();
    include("config.php");
    mysql_connect(DBHOST, DBUSER, DBPASS);
    mysql_select_db(DBNAME);
    $eredmeny = mysql_query("SELECT * FROM admin WHERE login_nev = '$uNev' && jelszo = '$uJelszo'");
    $adatok = mysql_fetch_array($eredmeny);
    if($adatok) {

    $_SESSION['loginnev'] = $uNev;
    header("Location:admin.php");
    }
    else {
    header("Location: adminlogin.php?badlogin");
    }

    ?>
    --------------------------
    Ha van egyezés az adatbázisban - ergo már regisztrált felhasználóról van szó, akkor átirányítjuk az admin.php-re.
    Ellenkező esetben pedig visszaküldöm az emberemet az adminlogin.php-ra egy sikertelen belépés üzenettel!

    Illetve, hogy minden oldal elejére, amit védetté szeretnék tenni, beszúrom a következő php kódot:

    <?php
    session_start();
    if(!isset($loginnev)){
    header("Location:adminlogin.php");
    }
    ?>

    Kérlek titeket, ha valaki hibát talál benne, vagy hozzá tud szólni a kód helytállóságához, az tegye meg!

    Köszönettel, BooBoo!
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd