Hítelesítés PHP-val
2004-11-18T08:53:40+01:00
2004-11-18T10:15:28+01:00
2022-07-19T05:32:48+02:00
  • szia!

    ha az if(isset()... mellé tennéd a jelszó-ellenőrzést? akkor végülis mindegy, hogy cancel volt, vagy rossz user/passw megadás. vagy valamit félreértettem abból amit írtál?
    Mutasd a teljes hozzászólást!
  • Sziasztok

    Van egy érdekes biztonsági problémám.
    A helyzet a következő: "biztonságos" belépést szeretnék, tehát nem a szokásos beviteli mezőkkel, hanem a PHP saját hitelesítésével, ami a megfelelő header-ek elküldésével a következő módon történik:

    <?php
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="Jelszó védelem"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Sajnos a Cancel gombbal nem megy.';
    exit;
    } else {
    echo "<p>Szia {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>A jelszavad: {$_SERVER['PHP_AUTH_PW']}</p>";
    }
    ?>

    Ez szerepel mindenhol mint alappélda. A bajom a következő. Ha kicsit komolyabb programba szeretném beépíteni, és nem elég az hogy a tiszta oldalra echo-val kiírok valamit, akkor én megoldhatatlan problémába ütközök, ugyanis nem tudok különbséget tenni a helyes belépés, és a cancel között. Miért? Ha jól tudom, a header rész kétszer fut le a program működése során.
    Nekem az echo helyett egy include van, ami beépíti a megfelelő oldalt. A leírt példa ráadásul csak egyszer működik jól, utána többet nem működik, mivel a SERVER változó tartalma nem módosítható, ezért ezt egy munkamenet függvénnyel helyettesítettem, amivel már jól működik. Részben, és itt a probléma. Ha cancelt nyomok, vagy ha kitöltöm az adatokat, a munkamenet függvény akkor is értéket kap, és be akar tenni a védett oldalra /persze nem tud, mert ott is van jelszóellenőrzés/, csak egyszerűen hülyén néz ki, hogy egyszer cancelt nyomok jól működik, a következő alkalommal be akar tenni a védett oldalra, anélkül, hogy jelszót kérne, az meg visszadobja, hogy hibás jelszó, stb, anélkül, hogy kért volna bármilyen adatot is.
    Ráadásul - ami komolyabb - ha már egyszer bejelentkeztem, és ugyanazzal az aktív böngészővel még egyszer bejelentkezem ha cancelt nyomok, egyszer betesz a védett oldalra /amit meg is tud tenni, mert a SERVER változó értéke tartalmazza a helyes adatokat, tehát beenged/, egyszer kér jelszót.
    A probléma tehát: honnan lehet tudni, hogy helyes adatkitöltés, vagy cancel gomb nyomása történt?

    Bocs a hosszú kifejtésért.
    Üdv, és köszi.
    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