
PHP: Přístup k stránkám zabezpečený heslem bez MySQL - je to bezpečné?
Dobrý den,
pro tentokrát řeším problém přihlášení do administračního centra bez použití databáze.
Přihlášení probíhá takto:
// hlavičky
include('../header.php');
// uživatel
$admin_user = 'user';
$admin_pw = '6e017b5464f820a6c1bb5e9f6d711a667a80d8ea';
// přihlášení (případné:-)
if ( $_POST['user'] != $admin_user or sha1($_POST['pw']) != $admin_pw ) {
$_SESSION['login_err'] = 0;
presmeruj('../prihlas.php');
}
else {
$_SESSION['login'] = 1;
unset($_SESSION['login_err']);
presmeruj('../index.php');
}
Někde jsem četl, že přímo porovnání hesla není moc bezpečné, proto jsem přidal funkci sha1(), někde jsem taky četl něco o crypt, tak nevím.
Je toto řešení bezpečné proti případným útokům?
Dík za případné odpovědi
* Co kdyby člověk šel rovnou na prihlas.php?
* Co kdyby člověk šel na header.php?
* Nemáš to zajištěný proti session fixation, za určitých podmínek by mohl jít útok s refererem. Oboje a další viz http://php.vrana.cz/zabezpeceni-session-promennych. php
* pokud $_POST['user'] nebo $_POST['pw'] neexistuje a v error_reporting je i E_NOTICE, vrhne to chybovou hlášku.
* A co CSRF? (XSRF) To se netýká přihlášení, ale jednotlivých akcí.
* Co kdyby člověk šel rovnou na prihlas.php?
Tohle mám vyřešené.
* Co kdyby člověk šel na header.php?
Rovněž vyřešené.
* Nemáš to zajištěný proti session fixation, za určitých podmínek by mohl jít útok s refererem. Oboje a další viz zabezpeceni-session-promennych. php
O tom si něco přečtu.
* pokud $_POST['user'] nebo $_POST['pw'] neexistuje a v error_reporting je i E_NOTICE, vrhne to chybovou hlášku.
Samozřejmě, že to vrhne chybovou hlášku, neposkytl údaje v POST, musí se přihlásit...
* A co CSRF? (XSRF) To se netýká přihlášení, ale jednotlivých akcí.
Tomuhle taky nerozumím.
XSRF dobře vysvětlil Jakub Vrána na cross-site-request-forgery.php .