session与cookie会话控制
发布:smiling 来源: PHP粉丝网 添加日期:2013-11-14 19:14:22 浏览: 评论:0
注意 1: PHP不会自动创建目录结构. 你可以使用在ext/session目录内的脚本来创建目录结构.
注意 2: 如果你选择使用子目录来保存session,请检查下面关于垃圾回收的配置段
文件存储模块默认使用600模式来创建文件,在使用中你可以改变此选项
session.save_path = "N;MODE;/path"
这里的MODE由8进制来表示. 注意这里不会覆盖进程的umask.
session.save_path = "/tmp"
用来设置是否在客户端使用cookie来存放会话ID.
session.use_cookies = 1
用来设置是否只使用安全链接协议(https)来发送cookie
session.cookie_secure =
用来决定是否在客户端只使用cookie来存放会话ID,而放弃使用URL,很好的保护了那些在URL中传送session id的用户免于被攻击。 默认是 0.
session.use_only_cookies = 1
session的默认名称 (作为cookie名称来使用).
session.name = PHPSESSID
用于指定是否在请求开始的时候自动启动session.
session.auto_start = 0
用于指定放送到浏览器端的会话cookie的生命周期(单位:秒),或者如果为0表示cookie的生命周期直到浏览器被关闭为止。
session.cookie_lifetime = 0
cookie有效作用路径.
session.cookie_path = /
cookie有效的作用域名.可以防止别的域非法读取自己的会话cookie,以增强cookie的安全性
session.cookie_domain =
是否将httpOnly标志增加到cookie上, 增加后则cookie无法被浏览器的脚本语言(例如JavaScript)存取.
session.cookie_httponly =
用于序列化数据的处理器. php是标准的PHP序列化器.
session.serialize_handler = php
定义在每次session初始化时启动'垃圾回收'进程的概率.比例由 gc_probability/gc_divisor来得出,例如. 1/100 意味着在每次请求时有1%的机会启动'垃圾回收'进程.
session.gc_probability = 1
session.gc_divisor = 100
指定了经过多少秒数之后,存储的数据会被认为是'垃圾'并且被垃圾回收进程清理掉. 单位:秒。 1440 == 24分钟
它的判断依据是最后访问数据的时间,对于FAT文件系统则是最后修改数据的时间。
session.gc_maxlifetime = 1440
注意: 如果你使用子目录选项来保存session文件
(查看在上面的session.save_path), 那么垃圾回收就 *不会* 自动发生.你需要通过一个shell脚本,cron或者其他方法来自行处理垃圾回收.例如, 下面的脚本相当于将session.gc_maxlifetime设置为 1440 (1440 秒 = 24 分钟):
cd /path/to/sessions; find -cmin +24 | xargs rm
PHP 4.2 和更早版本有一个未公开的 特性/bug , 此特性允许你在全局初始化一个session变量,即便 register_globals 已经被关闭.如果此特性被使用,PHP 4.3 和更早版本会警告你.你可以关闭此特性并且隔离此警告. 这时候,如果打开bug_compat_42,那此警告只是被显示出来.
session.bug_compat_42 = 1
session.bug_compat_warn = 1
检查HTTP Referer来防止带有id的外部URL.
用来验证HTTP_REFERER中是否包含指定的字符串(通过下面字段设置),如果包含则会话ID被视为有效。默认为空,表示全部视为有效。
session.referer_check =
从此文件读取多少字节.
session.entropy_length = 0
在这里指定创建session id.
session.entropy_file =
session.entropy_length = 16
session.entropy_file = /dev/urandom
设置为 {nocache,private,public,} 来决定HTTP缓冲的类型, 留空则防止发送 anti-caching 头.
session.cache_limiter = nocache
文档在n分钟之后过期.
session.cache_expire = 180
trans sid 支持默认关闭.使用 trans sid 可能让你的用户承担安全风险.使用此项必须小心.用户也许通过email/irc/其他途径发送包含有效的session ID的URL给其他人.包含有效session ID的URL可能被存放在容易被公共存取的电脑上.用户可能通过在浏览器历史记录或者收藏夹里面的包含相同的session ID的URL来访问你的站点.
session.use_trans_sid = 0
选择hash方法
0: MD5 (128 bits)
1: SHA-1 (160 bits)
session.hash_function = 0
当转换二进制hash数据到可读形式时,每个字符保存时有几位.
4 bits: 0-9, a-f
5 bits: 0-9, a-v
6 bits: 0-9, a-z, A-Z, "-", ","
session.hash_bits_per_character = 4
URL rewriter会在已经定义的一组HTML标签内查找URL.form/fieldset 是特殊字符; 如果你在这里包含他们, rewriter会增加一个包含信息的隐藏字段否则就是在URL中附加信息.如果你你想遵守XHTML, 删除form的入口.注意 所有合法的入口都需要一个"="符号, 甚至是没有任何值的.
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="
2.5 session安全问题
攻击者通过投入很大的精力尝试获得现有用户的有效会话ID,有了会话id,他们就有可能能够在系统中拥有与此用户相同的能力.
因此,我们主要解决的思路是效验session ID的有效性.
- if(!isset($_SESSION['user_agent'])){
- $_SESSION['user_agent'] = $_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'];
- }
- elseif ($_SESSION['user_agent'] != $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'])
- {
- session_regenerate_id();
- }
Tags: session cookie 会话
相关文章
- ·session 的工作原理与session用法 (2013-11-12)
- ·PHP创建和使用session cookie变量(2013-11-13)
- ·cookie和session 区别(2013-11-14)
- ·PHP 会话(session 时间设定)使用入门 (2013-11-14)
- ·关于使用session_start 出现的headers (2013-11-27)
- ·session Cannot send session cache limiter 错误提示(2013-11-28)
- ·session_start() [function.session-start]: Cannot send session cookie(2013-11-29)
- ·Warning: session_destroy() [function.session-destroy]: Trying to destroy(2013-11-29)
- ·php中session引起错误问题集锦(2013-11-30)
- ·php session永不过期的设置方法(2013-11-30)
- ·PHP中session共享和登录验证的实现方法(2013-12-02)
- ·php中session超时严格控制实例(2013-12-02)
- ·PHP中header和session_start前不能有输出的原因(2013-12-03)
- ·Deprecated: Function session_register() is deprecated(2013-12-04)
- ·Warning: session_start() [function.session-start](2013-12-04)
- ·php中IE7 iframe session丢失问题解决方案(2013-12-04)

推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)