Zadejte hledaný výraz...

Hash sha512 nevěděl by někdo?

TomasX
verified
rating uzivatele
(4 hodnocení)
3. 9. 2018 17:33:19
ano, to je ono.
uprav to přibližně takhle, tj. předej si do funkce login původní heslo.
// Controller pro hlavní stránku
class AdminController extends Controller
{
public $admin = 1;
public function process($parameters)
{
$this->header = array(
'title' => 'Administrace - Ulov zákazníka',
'keywords' => '',
'description' => '',
);
if(!User::logged_in()) {
if (!empty($_POST) AND isset($_POST)) {
$_POST = filter_var($_POST, FILTER_SANITIZE_EMAIL);
$input_password = $_POST;
$_POST = User::encrypt_password($_POST, $_POST);
if (empty($_POST) || empty($_POST)) {
$_SESSION[] = 'Musíte vyplnit e-mail a heslo.';
} elseif (filter_var($_POST, FILTER_VALIDATE_EMAIL) == false) {
$_SESSION[] = 'Zadaný e-mail nemá platný formát.';
} elseif (User::login($_POST, $_POST) == false) {
$_SESSION[] = 'Neplatné přihlašovací údaje.';
}
if (!empty($_POST) && empty($_SESSION)) {
$login = User::login($_POST, $input_password);
setcookie("user_id", $login, time()+60*60*24*30,"/");
$_SESSION = $login;
$this->redirect('admin');
}
}
$this->view = 'admin/login';
} else {
$this->view = 'admin/index';
}
}
}
---------- Příspěvek doplněn 03.09.2018 v 17:34 ----------
hm, php kód tady nelze lépe zvýrazňovat, přidal jsem řádek $input_password = $_POST; a input_password proměnnou hodil do login funkce.
3. 9. 2018 17:33:19
https://webtrh.cz/diskuse/hash-sha512-nevedel-by-nekdo/strana/3#reply1363851
Celé jsem to tam upravené zkopíroval...a stále nic...heslo je noveheslo, to pak zase vygeneruju nějaké nové... můžeš vyzkoušet.
Administrace - Ulov zákazníka
3. 9. 2018 17:38:39
https://webtrh.cz/diskuse/hash-sha512-nevedel-by-nekdo/strana/3#reply1363850
TomasX
verified
rating uzivatele
(4 hodnocení)
3. 9. 2018 17:48:44
funkce user_login tam je dvakrát, vyměň ten POST za i put_password proměnou i na tom prvním místě.
Stránka nemá ssl, prohlížeč mi nedovolí formulář odeslat :), ale to by stejně nic nepomohlo.
Musíš víc sám hledat chyby, pokud t nejde, někde tam je chyba, chce to vždy znovu a znovu pročítat a postupně se někam dostávat.
3. 9. 2018 17:48:44
https://webtrh.cz/diskuse/hash-sha512-nevedel-by-nekdo/strana/3#reply1363849
Zkoušel jsem to i bez toho emailu..a nic.... $input_password = User::encrypt_password($_POST, $_POST); Proč tady encryptuju i ten email ? Už fakt nevim..
// Controller pro hlavní stránku
class AdminController extends Controller
{
public $admin = 1;
public function process($parameters)
{
$this->header = array(
'title' => 'Administrace - Ulov zákazníka',
'keywords' => '',
'description' => '',
);
if(!User::logged_in()) {
if (!empty($_POST) AND isset($_POST)) {
$_POST = filter_var($_POST, FILTER_SANITIZE_EMAIL);
$input_password = $_POST;
$input_password = User::encrypt_password($_POST, $_POST);
if (empty($_POST) || empty($_POST)) {
$_SESSION[] = 'Musíte vyplnit e-mail a heslo.';
} elseif (filter_var($_POST, FILTER_VALIDATE_EMAIL) == false) {
$_SESSION[] = 'Zadaný e-mail nemá platný formát.';
} elseif (User::login($_POST, $_POST) == false) {
$_SESSION[] = 'Neplatné přihlašovací údaje.';
}
if (!empty($_POST) && empty($_SESSION)) {
$login = User::login($_POST, $input_password);
setcookie("user_id", $login, time()+60*60*24*30,"/");
$_SESSION = $login;
$this->redirect('admin');
}
}
$this->view = 'admin/login';
} else {
$this->view = 'admin/index';
}
}
}
3. 9. 2018 17:55:59
https://webtrh.cz/diskuse/hash-sha512-nevedel-by-nekdo/strana/3#reply1363848
TomasX
verified
rating uzivatele
(4 hodnocení)
3. 9. 2018 18:01:04
ten celej kód je dost nešikovný. Email se neecryptuje, pouze je jako vstup do funkce, v původní verzi se přece dělal hash z emailu a hesla, teď nově jsem ti doporučil do nepoužívat.
Takhle by to mělo vypadat, můžeš vyzkoušet?
// Controller pro hlavní stránku
class AdminController extends Controller
{
public $admin = 1;
public function process($parameters)
{
$this->header = array(
'title' => 'Administrace - Ulov zákazníka',
'keywords' => '',
'description' => '',
);
if(!User::logged_in()) {
if (!empty($_POST) AND isset($_POST)) {
$_POST = filter_var($_POST, FILTER_SANITIZE_EMAIL);
$input_password = $_POST;
$_POST = User::encrypt_password($_POST, $_POST);
if (empty($_POST) || empty($_POST)) {
$_SESSION[] = 'Musíte vyplnit e-mail a heslo.';
} elseif (filter_var($_POST, FILTER_VALIDATE_EMAIL) == false) {
$_SESSION[] = 'Zadaný e-mail nemá platný formát.';
} elseif (User::login($_POST, $input_password) == false) {
$_SESSION[] = 'Neplatné přihlašovací údaje.';
}
if (!empty($_POST) && empty($_SESSION)) {
$login = User::login($_POST, $input_password);
setcookie("user_id", $login, time()+60*60*24*30,"/");
$_SESSION = $login;
$this->redirect('admin');
}
}
$this->view = 'admin/login';
} else {
$this->view = 'admin/index';
}
}
}
3. 9. 2018 18:01:04
https://webtrh.cz/diskuse/hash-sha512-nevedel-by-nekdo/strana/3#reply1363847
To je stejné ne? zkusil jsem a nejde....
3. 9. 2018 18:08:24
https://webtrh.cz/diskuse/hash-sha512-nevedel-by-nekdo/strana/3#reply1363846
TomasX
verified
rating uzivatele
(4 hodnocení)
3. 9. 2018 18:31:00
není, je tam změna v řádku "} elseif (User::login($_POST, $input_password) == false) {", už bys to měl sám zdebugovat a zfunkčnit, je možné, že tam je chyba i uvnitř, za chvilku odcházím do offline.
1. v tom controlleru se předpokládá, že login() vrací buď false nebo user_id, to ale současná implementace loginu nedělá a měla by se změnit takhle:
public static function login($email, $password) {
$result = Db::queryOne('SELECT `user_id`, `email`, `password` FROM `users` WHERE `email` = ?', array($email));
if (is_null(@$result->user_id)) { return false; }; // user does not exists
if (password_verify($password, $result->password)) {
return $result->user_id;
} else {
return false;
}
2. Ve třídě User se v konstruktoru __construct volá db dotaz, ale jeho výsledek se ukládá pouze do lokální proměnné a rázem tedy zanikne, je to zbytečné.
Budeš si to muset projít krok po kroku, zkusit si tam dát do některých míst napevno true a zkusit najít, kde je chyba a co nefunguje.
3. 9. 2018 18:31:00
https://webtrh.cz/diskuse/hash-sha512-nevedel-by-nekdo/strana/3#reply1363845
když jsem dal
Hodilo mi to tohle...
To znamená, že to heslo zadávám správně ?
3. 9. 2018 21:55:43
https://webtrh.cz/diskuse/hash-sha512-nevedel-by-nekdo/strana/3#reply1363844
TomasX
verified
rating uzivatele
(4 hodnocení)
3. 9. 2018 22:03:41
ano, teď dokonce podle toho výpisu ti to již ověřilo správně heslo a měl bys být přihlášen. Můžeš z funkce odstranit ty var_dump volání a exit().
Teď už by to mohlo fungovat.
3. 9. 2018 22:03:41
https://webtrh.cz/diskuse/hash-sha512-nevedel-by-nekdo/strana/3#reply1363843
Když vyhodím var dump všude a dám tohle... tak to nepřeskočí na stránku administrace. Formulář jenom tak proskočí... s tim var dump to mělo dvě reakce..špatné heslo..nepustilo a dobré heslo ten předchozí výpis...
---------- Příspěvek doplněn 03.09.2018 v 22:38 ----------
Takže se něco stane tady v admin controlleru ?
3. 9. 2018 22:08:11
https://webtrh.cz/diskuse/hash-sha512-nevedel-by-nekdo/strana/3#reply1363842
TomasX
verified
rating uzivatele
(4 hodnocení)
3. 9. 2018 22:43:53
ano, tam hledej zádrhel, jak jsem psal předminule, možná za to může funkce login, která po úpravě nevrací user_id, o dva příspěvky hore jsem ti psal její opravený kód.
Může tam být problém se sezením a s cookies, na první polhed nevidím nikde chybu, ale kód je pro mě špatně čitelný na malém displaji - jsem na konferenci jen s mobilem.
---------- Příspěvek doplněn 03.09.2018 v 22:45 ----------
může tam být i někde jinde ponechaný výstup z php a tím se nepošle správně hlavička na redirect na admin, zkontroluj přes Developer tools v prohlížeči jak vypadá komunikace se serverem a co se přenáší.
Teoreticky také můžeš celou tuhle kontroler metodu upravit, dát tam natvrdo jedno heslo a tím si ověřit, jestli jsi na správné cestě.
3. 9. 2018 22:43:53
https://webtrh.cz/diskuse/hash-sha512-nevedel-by-nekdo/strana/3#reply1363841
Pro odpověď se přihlašte.
Přihlásit