PHP - 这对于唯一会话令牌是否足够安全?

时间:2016-04-19 19:17:21

标签: php database security authentication

我正在创建一个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功能),任何关于如何使这更安全的建议请评论。

1 个答案:

答案 0 :(得分:0)

如果您希望它尽可能安全&#34;那么请使用既定方法而不是尝试创建自己的方法。例如,让第三方认证就像StackOverflow允许您使用Facebook,Yahoo等登录...

此外,PHP具有built-in session handling功能,可以同时使用Cookie和数据库,OWASP提供了如何安全管理会话的指南,我不明白为什么你这样做?重新尝试通过生成自己的会话令牌重新发明轮子。