我正在尝试更多地了解PHP 会话修复和劫持以及如何防止这些问题.我一直在阅读Chris Shiflett网站上的以下两篇文章:
但是,我不确定我是否理解正确的事情.
为了帮助防止会话固定,调用session_regenerate_id(true)就足够了; 成功登录某人后?我想我理解正确.
他还讨论了通过$ _GET使用在URL中传递的令牌来防止会话劫持.怎么会完全这样做?我猜测当有人登录时你生成他们的令牌并将其存储在会话变量中,然后在每个页面上你将该会话变量与$ _GET变量的值进行比较?
这个令牌只需要在每个会话或每个页面加载时更改一次吗?
他们是一个防止劫持而不必在网址中传递值的好方法吗?这会更容易.
我想在php中扩展会话超时
我知道可以通过修改php.ini文件来实现.但我无法访问它.
那么有可能只用PHP代码吗?
默认情况下,PHP会话是否超时 - 即,如果我没有任何编码,用户最终会在一段时间不活动后"退出"?
如果我点击了一个电话的页面session_start().我需要等多久,所以如果我要刷新页面,我会收到一个新的会话ID?
当用户登录时,我正在创建一个会话:
$_SESSION['id'] = $id;
Run Code Online (Sandbox Code Playgroud)
如何在X分钟的会话上指定超时,然后在达到X分钟后执行功能或页面重定向?
编辑:我忘了提到由于不活动我需要会话超时.
有人可以告诉我我的会话将持续多长时间从下面的数据? - 我不确定哪一个告诉我
session.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly Off Off
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 5 5
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /var/lib/php/session /var/lib/php/session
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off …Run Code Online (Sandbox Code Playgroud) session.gc_maxlifetime和之间的实际区别是session_cache_expire()什么?
假设我希望用户会话在非活动15分钟后无效(在首次打开后不是15).哪一个会帮助我?
我也知道我可以做的session_set_cookie_params(),可以设置用户的cookie在一段时间内到期.但是,cookie到期以及服务器端的实际会话到期时间并不相同; 这也会在cookie过期时删除会话吗?
我所拥有的另一个解决方案是$_SESSION['last_time'] = time()
每个请求都很简单
,并将会话与当前时间进行比较,基于此删除会话.我希望有一个更"内置"的机制来处理这个问题.
谢谢.
我在我的网站上使用php Sessions,似乎它们随机间隔"消失".我不知道他们是否由于不活动或我的代码出现问题而超时,但是有没有办法控制会话到期时的会话?
就像我可以在我的代码中添加一些内容或更改php.ini文件中的内容一样?
更新 -所以只是在这里更新,我切换主机,神奇地会话开始工作.我不知道出了什么问题,但显然他们不想正常工作.
我的在线测试管理系统有一个奇怪的问题.
测试表(test.php)中的一些用户需要很长时间来回答问题并提交表单.
提交表单后,会话已过期,用户必须再次登录
这不是代码问题
我将此值设置在所有页面的顶部
ini_set('session.gc_maxlifetime', 18000);
Run Code Online (Sandbox Code Playgroud)
有没有办法刷新会话evrey 10分钟而不重新加载测试表单中的页面,以防止会话过期?
请帮我
谢谢
可能重复:
如何在30分钟后使PHP会话到期?
我正在销毁logout.php中的所有会话var并在用户点击注销时调用它,用户不点击logout.php但直接关闭浏览器.我怎么能删除会话然后???