gpt4 book ai didi

php - 在 php 中创建 session 的最安全方法

转载 作者:行者123 更新时间:2023-12-02 06:16:50 25 4
gpt4 key购买 nike

我正在开发一个网站,想要创建用户登录和 session 。检查 session 是否存在的最安全方法是什么(例如 cookie 或 session 变量检查),或者有比在 php 中使用 session 更好的主意吗?

最佳答案

session_id() returns the session id for the current session or the empty string ("") if there is no current session (no current session id exists).

http://de.php.net/manual/en/function.session-id.php

但这只是告诉您 session 是否处于事件状态。

大多数时候,我只是在每个脚本的开头调用 session_start(); (即使用户未登录)。登录时,我使用用户 ID 或用户对象设置 $_SESSION['user'] 。注销时,我只是unset($_SESSION['user']);。通过检查 empty($_SESSION['user']) 我可以检查某人是否仍然登录。如果您在 session 中的其他位置存储与用户相关的信息,请不要这样做,否则下一个登录的人可能会得到他不应该看到的信息(在这种情况下使用 session_destroy();) .

但是安全吗?只需通过 GET/POST url 重写(仅限 cookie)停用 session ID 传播,这样它们就不会出现在可以缓存或分发给其他人的 URL 中(在这种情况下, session 劫持是可能的)。您可以通过在 php.ini 中设置 session.use_only_cookies 来做到这一点。

如果您托管在不受信任和/或配置错误的共享服务器上,可能会出现其他安全问题 - 它可能会导致同一台计算机上的其他人读取您的 session 数据。在这种情况下,您可以通过重写 session 处理程序将 session 数据存储在数据库中。只需在 intertubes 上搜索session handler mysql,我确信有足够的现成解决方案。并且不要在 session 中存储密码等敏感信息,最好每次需要比较时都进行查询。

除此之外...使用 ssl/https 进行登录和用户管理,因此不会传输明文密码。仅在数据库中存储带盐的密码哈希值。不要让任何人看到密码(意思是:永远不要将它们打印到 html 或电子邮件中)。不要对用户可以看到的 id 使用 auto_increment 值(因此,猜测)。好吧,这已经超出了问题范围。

关于php - 在 php 中创建 session 的最安全方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/752332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com