Прекратите то, что вы делаете.Не проверяйте user-agent
или IP-адрес.Пользовательский агент является управляемой злоумышленником переменной, и проверка этого значения не повышает безопасность этой системы.IP-адрес изменится по уважительным причинам, например, если пользователь находится за балансировщиком нагрузки или TOR.
Идентификатор сеанса всегда должен быть криптографическим одноразовым номером .В php просто позвоните session_start()
, а затем начните использовать $_SESSION
super global.PHP позаботится обо всем этом для вас.Если вы хотите улучшить обработчик сессии php, используйте конфигурации .Включите use_only_cookies
, cookie_httponly
и cookie_secure
.Также установка entropy_file
на /dev/urandom
будет хорошей идеей, если вы работаете в системе * nix, но если у вас Windows, то у вас проблемы.
Например, для аутентификации пользователя:
//In a header file
session_start();
...
if(check_login($_POST['user_name'],$_POST['password'])){
//Primary key of this user
$_SESSION['user_id']=get_user_id($_POST['user_name']);
$_SESSION['logged_id']=True;
}
И чтобы проверить, вошел ли пользователь в систему:
//in a header file
session_start()
...
if(!$_SESSION['logged_id']){
header("location: login.php");
die();//The script will keep executing unless you die()
}
Чтобы улучшить эту систему, прочитайте OWASP A9 и используйтеHTTPS на всю жизнь сессии.Также прочитайте OWASP A5: CSRF, также известный как «езда на сеансе», и OWASP A2: XSS, потому что они оба могут быть использованы для компрометации сеанса.