miladrahimi / phpsession
免费的PHP会话工具,适用于整洁且强大的项目!
Requires
- php: >=5.3.0
README
免费的PHP会话工具,适用于整洁且强大的项目!
文档
PHPSession是一个小巧的包,用于以面向对象和更安全的方式使用会话。有一个名为Session
的类,您可以通过它来访问和操作会话。
安装
使用Composer
强烈建议使用Composer将PHPSession添加到您的应用程序中。如果您不熟悉Composer,可以阅读如何在PHP项目中使用Composer这篇文章。安装Composer后,进入您的项目目录并运行以下命令
composer require miladrahimi/phpsession
或者,如果您已经在应用程序中有了composer.json
文件,您可以将此包添加到应用程序的要求中并更新您的依赖项
"require": {
"miladrahimi/phpsession": "~1.6"
}
composer update
手动
只要您的自动加载器遵循PSR-0或PSR-4标准,您就可以使用自己的自动加载器。在这种情况下,您可以将src
目录的内容放入您的供应商目录中。
入门
操作非常简单!
use MiladRahimi\PHPSession\Session;
$session = new Session();
$session->set("Singer", "Pink Floyd");
echo $session->get("Singer");
- 由于与依赖注入兼容,新版本不再基于单例模式。
get()
方法在值不存在时将返回null
。
过期
默认情况下,会话数据是永久的。出于安全原因,您应该为您的会话定义生命周期。PHPSession会在其生命周期结束时过期数据。
use MiladRahimi\PHPSession\Session;
$session = new Session();
$session->setLifeTime(10); // 10 minutes lifetime!
$session->set("Singer", "Bon Jovi");
- 生命周期单位是分钟。
- 0分钟的生命周期意味着无限时间(这是默认值)。
- 每次更改生命周期时,其生命周期开始消耗。
UntrustedSession异常
出于安全原因,PHPSession会保存用户IP和Agent(网络浏览器工具)。它会在任何get()
调用中检查这些信息,以确保当前用户是真正的会话所有者。如果用户可疑,将抛出UntrustedSession
异常。
use MiladRahimi\PHPSession\Session;
use MiladRahimi\PHPSession\UntrustedSession;
$session = new Session();
$session->set("Singer", "Selena Gomez");
try {
echo $session->get("Singer");
} catch (UntrustedSession $e) {
echo "You must sign in again!";
// Log the information...
}
刷新
PHPSession无法识别需要刷新用户信息(如IP和代理)的确切位置。为了防止会话固定攻击,您应该在每次成功的登录请求中刷新会话。
$session->refresh();
会话劫持和固定
PHPSessions 目前是一个小巧的包。我保证在下一个版本中它会变得更好!这个版本中包含了一些安全考虑。如果你在每次成功登录后调用 refresh()
方法,它可以防止会话固定。它可以防止通过保持用户信息(IP和代理)进行简单劫持。实际上,我认为防止其他威胁是用户的责任。但如果你将 PHPSession 视为 PHP 本地 API,你可以使用它来实现你的安全方法。如果你有使 PHPSession 更加安全的想法,如果你能与我们分享,我将不胜感激!
贡献者
主页
许可证
PHPSession 在 MIT 许可证 下发布。