Autor | Zpráva | ||
---|---|---|---|
sitole Profil |
#1 · Zasláno: 4. 10. 2015, 17:28:32
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 |
#2 · Zasláno: 4. 10. 2015, 17:34:49
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 |
#3 · Zasláno: 4. 10. 2015, 17:43:25
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 |
#5 · Zasláno: 4. 10. 2015, 17:56:45
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 |
#6 · Zasláno: 4. 10. 2015, 17:58:13
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 |
#7 · Zasláno: 4. 10. 2015, 18:05:38
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 |
#8 · Zasláno: 4. 10. 2015, 18:34:53
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 |
#9 · Zasláno: 4. 10. 2015, 18:48:33
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 |
#10 · Zasláno: 4. 10. 2015, 18:59:10
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.
|
||
Časová prodleva: 9 let
|
0