Follow along with the video below to see how to install our site as a web app on your home screen.
Бележка: This feature may not be available in some browsers.
Karcho каза:Това работи, но работата е, че този hash не е нито MD5, нито SHA1.
$user = 'petar'; // $_POST['user'];
$pass = 'trompet'; // $_POST['pass'];
$email = $_POST['email'];
// ....
// Добре е този стринг да бъде различен във всеки следващ проект
define( 'random_string', 'random_complicated_' .
'string_coli-flower_dinozavar_tralala' );
$secure = md5( $user . $pass . random_string );
mysql_query( "
insert into
`users` (`user`, `pass`, `email` )
values(
'{$user}', '{$secure}', '{$email}'
)
;" );
// Хубаво е тази константа да бъде инклудвана само във файловете с регистрация, логин, лог-аут, забравена парола.....
define( 'random_string', 'random_complicated_' .
'string_coli-flower_dinozavar_tralala' );
$user = $_POST['user'];
$pass = $_POST['pass'];
$secure = md5( $user . $pass . random_string );
$q = mysql_query( "
select
count(*) as `num`
from
`users`
where
`user` = '{$user}' and
`pass` = '{$secure}'
;" );
$r = mysql_fetch_object( $q );
if( (string) $r -> num === '1' ) {
// Login successful!
} else {
// ERROR!
}
Също така могат да се ползват символи, които не са често ползвани: например † или ®sandh каза:Ако паролата е речникова дума или число - има голям шанс да се разбие. Затова, когато се хешират пароли обикновено могат да се ползват малко по-различни техники. Аз например правя нещо подобно:
При регистрация:При login:PHP:$user = 'petar'; // $_POST['user']; $pass = 'trompet'; // $_POST['pass']; $email = $_POST['email']; // .... // Добре е този стринг да бъде различен във всеки следващ проект define( 'random_string', 'random_complicated_' . 'string_coli-flower_dinozavar_tralala' ); $secure = md5( $user . $pass . random_string ); mysql_query( " insert into `users` (`user`, `pass`, `email` ) values( '{$user}', '{$secure}', '{$email}' ) ;" );PHP:// Хубаво е тази константа да бъде инклудвана само във файловете с регистрация, логин, лог-аут, забравена парола..... define( 'random_string', 'random_complicated_' . 'string_coli-flower_dinozavar_tralala' ); $user = $_POST['user']; $pass = $_POST['pass']; $secure = md5( $user . $pass . random_string ); $q = mysql_query( " select count(*) as `num` from `users` where `user` = '{$user}' and `pass` = '{$secure}' ;" ); $r = mysql_fetch_object( $q ); if( (string) $r -> num === '1' ) { // Login successful! } else { // ERROR! }
По този начин избягваш всякакви brute force атаки, защото паролата ти вече не е просто "trompet", а "petartrompetrandom_complicated_string.......", а подобно нещо не можеш да срещнеш в никой речник.
Разбира се може да я хеширате повторно, за да е ооооще по-сигурно. Аз лично всеки път си доокрасявам с нещо.
$pass = md5("hda9324ha_random".$parolata."8psai7z_random");