秘钥、session和cookie

本文探讨了登录认证系统中的秘钥管理,强调秘钥应具备唯一性并动态生成,如UUID。session和cookie是常见的存储方式,session数据安全性高但生命周期短,适合银行等对安全性要求高的系统;cookie则可用于视频网站等实现一个月免密登录。为防止用户因token销毁而需重复登录,建议将token信息持久化。

秘钥

业务说明:

一般在登录认证系统中 都会返回“秘钥”信息 来作为用户登录的凭证

特点:

最好独一无二。

动态生成秘钥:

UUID

空杠替换为空字符串   .replace

session和cookie

业务说明:

用户请求一次,一次响应  响应结束后服务器返回的数据 也会销毁

问题:如果销毁了token 用户则认为没有登录 需要重复登录

解决:应持久化token信息

 

session

会话控制技术 数据存储在内存当中 只能临时存入数据 不能永久保存

生命周期:会话结束,对象(数据)销毁 

cookie

小型文本文件  文件通常是加密的,可以临时或者永久的存储

两者区别: session储存 数据安全性高  会话结束 数据销毁

                   cookie储存 一个月免密登录

银行系统:session储存

视频网站:cookie储存

财务系统:session储存

购物系统:cookie储存

### 在 Yii 1.1 中通过 `CWebModule` 的 `setComponents()` 方法设置 Cookie Session 在 Yii 1.1 框架中,可以通过模块的 `setComponents()` 方法来配置组件。这使得开发者能够在模块级别定义修改诸如 `cookie` `session` 等核心功能的行为。 #### 使用 `setComponents()` 配置 Cookie Session 以下是具体实现方法的一个示例: ```php <?php class AdminModule extends CWebModule { public function init() { parent::init(); // 定义并设置 components 属性 $this->setComponents(array( 'session' => array( 'class' => 'CHttpSession', 'autoStart' => true, 'timeout' => 3600, // 设置超时时间为 1 小时 'cookieMode' => 'allow', // 允许使用 cookies 存储 session ID 'savePath' => '/var/www/session_data', // 自定义 session 数据存储路径 'useTransparentSessionID' => false, // 不透明化 session ID ), 'request' => array( 'enableCookieValidation' => true, // 启用 cookie 验证 'cookieValidationKey' => 'your_secret_key_here', // 设置密钥以保护 cookies ), )); } public function beforeControllerAction($controller, $action) { if (parent::beforeControllerAction($controller, $action)) { return true; } else { return false; } } } ``` - **`session` 组件配置**: 上述代码片段展示了如何通过 `setComponents()` 来配置 `session` 组件[^2]。主要涉及以下几个关键属性: - `class`: 指定所使用的类名 (`CHttpSession`)。 - `autoStart`: 控制是否自动启动 PHP 的会话管理,默认为 `true`。 - `timeout`: 设定会话的有效期时间(单位:秒),在此期间无活动则会被视为过期。 - `cookieMode`: 决定了是否允许或强制使用 cookies 来传输 session IDs,可选值有 `allow`, `none`, `only`。 - `savePath`: 修改默认 `/tmp` 路径,指定服务器上的其他目录保存 session 文件。 - `useTransparentSessionID`: 当启用此选项时,即使客户端禁用了 cookies,也会尝试通过 URL 参数传递 session ID。 - **`request` 组件配置**: 对于安全性增强而言,还可以调整 `request` 组件的相关参数[^3]^。例如: - `enableCookieValidation`: 开启后会对所有发送到浏览器端的 cookies 加入签名验证,防止篡改攻击。 - `cookieValidationKey`: 提供一个随机字符串作为加密秘钥,确保只有合法站点能够生成有效的 signed cookies。 #### 实际应用场景举例 假设我们需要在一个电商网站后台管理系统里加强登录状态的安全防护措施,则可以利用上述技术手段完成如下目标: 1. 缩短普通用户的 session 生命周期至较短时间内(如 30 分钟); 2. 强制要求管理员账户必须依赖 cookies 才能维持已认证身份; 3. 利用高强度哈希算法产生的唯一标识符充当 `cookieValidationKey` 值,保障敏感信息不被窃取冒充。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值