Autor Zpráva
sitole
Profil
Ahoj, dělám si takové jednoduché přihlášení a chci si jej pamatovat jak jinak než pomocí sušenky. Problém je, že i když sušenka "Cellen_Admin" není prohlížeč jí stále vypisuje. Jak je to možné? Nejspíše jsem někde udělal chybku, které jsem si nevšiml.

<?php
//include ("../settings/settings.php");

$name = "Admin";
$password = "Heslo";

$passwrod_hash = SHA1(md5(md5(SHA1($password)))); // Zašifrování hesla z "settings.php"
$cookie_name = "Cellen_" . $name; // Přidání jména uživatele do jména sušenky
$cookie_pass = $_COOKIE[$cookie_name]; // Vypsání sušenky do proměnné

// Zjíštění zda má uživatel vytvořenou a uloženou sušenku
if ($passwrod_hash = $cookie_pass) {
echo "Sušenka je vytvořena ve správném tvaru! <br>";
echo $passwrod_hash . "<br>";
echo $cookie_pass . "<br>";
echo $_COOKIE[$cookie_name] . "<br>";
}

?>

Obsah sušenky "Cellen_Admin" je vlastně zahešované heslo "cf3b0d61c5b418f3c0a180316c30e9f5240b876f". To stejné je i výsledek zahešování hesla "Heslo".
lionel messi
Profil
sitole:
Podmienka na r. 12 má byť správne:

if ($passwrod_hash == $cookie_pass)

Operátor = znamená priradenie, ale ty potrebuješ porovnanie, čiže ==.
sitole
Profil
lionel messi:
Děkuji, ale stále to nefunguje. Upravil jsem na řádku 12 z = na ==, ale stále se zobrazuje ta neexistující sušenka.
Tomáš123
Profil
sitole:
Použi var_dump(). Zisti, čo jednotlivé premenné obsahujú. V kóde vyššie je preklep v názve premenných. Nepomýlil si sa u seba iba v jednom z názvov?
sitole
Profil
Tak doufám vyřešeno. Nevím jak je to možné, ale sušenka se nevytvořila na adrese subdom.domena.cz, ale na adrese subdom.domena.cz/system a proto se nezobrazovala v sušenkách pro subdoménu, ale až složku. Takže to byla chyba moje. Je ale pravda, že nedokážu pochopit jak se tam mohla vytvořit. Každopádně je bezpečné se takto přihlašovat? Pomocí jména v názvu sušenky a následně zahešovaného hesla jako obsahu? :)
Alphard
Profil
sitole:
Každopádně je bezpečné se takto přihlašovat?
Ne.

a chci si jej pamatovat jak jinak než pomocí sušenky
Pomocí session. Tohle je opravdu vynikající nápad. Útočníkovi stačí jednou ukrást otisk hesla v cookie a má otevřené dveře do systému až do změny hesla.
sitole
Profil
Alphard:
V tomhle jsem začátečník.. Jak prosím? Heslo je hešované a do systému se přece dostanu jen skrze formulář. A když tam zadám obsah sušenky se jménem zahešuje a porovná to přece již to zahešované. U WP stačí přece také jen uživateli okopírovat sušenku a do systému se může dostat. Či ne? :)
Alphard
Profil
sitole:
U WP stačí přece také jen uživateli okopírovat sušenku a do systému se může dostat.
WP neznám, ale předpokládám, že používá klasické session přihlášení. Ukradený session identifikátor sice umožní vstup do systému, avšak identifikátor se občas přegenerovává. Takže se útočník do systému aspoň nedostane s měsíc starou cookie, kterou našel někde v počítači.

Udělat bezpečné přihlášení není vůbec snadné a bez https to nejde, ale někde se začít musí. A místo těch tvůrčích nápadů s kombinací hashovacích funkcí doporučuji password_hash() + password_verify().
sitole
Profil
Alphard:
Sušenka je aktuální pouze jeden den. Poté jí bude možné rozšířit na max týden, ale za předpokladu souhlasení s dotazníkem "Je to váš bezpečný domácí či pracovní pc?" Poté je to možné?
Alphard
Profil
Na tom, jakou expiraci si nastavíte, z pohledu útoku prakticky nezáleží. Http hlavičky mohou zůstat viset někde v historii měsíce i roky a čekat na zneužití. A vaše aplikace nemá rozumný mechanismus, jak je zneplatnit.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: