我正在创建一个PHP应用程序,并且需要用户身份验证才能尽可能安全!
用户登录后,我需要设置一个带有会话标识符的cookie(以及其他cookie),这必须是唯一的。
<?php
// Set default timezone for time() function.
date_default_timezone_set("Europe/London");
$secure_token_length = 16; // 32-Digits Long.
// Generate unique token.
$token = time() . "-" . bin2hex(openssl_random_pseudo_bytes($secure_token_length, $strong));
// Set session identifier.
setcookie("session", $token, 0, "/app/", false, false, true);
?>
正如您所看到的,我正在创建一个唯一的令牌并附加当前的UNIX时间戳以确保此值不会生成两次,安全令牌存储在UNIQUE列的数据库中,并且令牌未插入到数据库,如果它已经在使用(使用PHP的Do-While功能),任何关于如何使这更安全的建议请评论。
答案 0 :(得分:0)
如果您希望它尽可能安全&#34;那么请使用既定方法而不是尝试创建自己的方法。例如,让第三方认证就像StackOverflow允许您使用Facebook,Yahoo等登录...
此外,PHP具有built-in session handling功能,可以同时使用Cookie和数据库,OWASP提供了如何安全管理会话的指南,我不明白为什么你这样做?重新尝试通过生成自己的会话令牌重新发明轮子。