关于标准会话的一些基础知识(使用cookie):
当用户第一次访问您的站点时,session_start()将
使用哈希作为文件名创建一个文件(或多或少随机(*)(请参阅session_save_path()).
PHP将将所有$ _SESSION变量存储在该文件中.同时用户获取具有该散列的cookie(会话ID).
用户是否请求另一个站点(发送带有会话ID的cookie)PHP将检查具有该散列的文件如果存在,其中的所有内容都将被读入$ _SESSION.
用户与之联系的所有内容都是哈希.只要您清理要写入$ _SESSION(来自用户)的所有内容,就无需在读取这些值时再次检查.
你需要做的就是尽可能地(从你身边)尽可能地"窃取"会话ID(或者使用它).
一个好的开始是仅允许cookie.URL中的会话ID最终由搜索引擎复制/粘贴或缓存
ini_set('session.use_cookies' ,1);
ini_set('session.use_only_cookies',1);
ini_set('session.use_trans_sid' ,0);
Run Code Online (Sandbox Code Playgroud)
在session_start()之前应该这样做,请参阅会话配置以获取更多信息.
删除当前会话,创建一个新会话(新哈希)会迫使可能的攻击者迅速采取行动
session_regenerate_id(true);
Run Code Online (Sandbox Code Playgroud)
在session_start()完成后.(session_regenerate_id())
保存用户IP(部分)并在会话发生变化时销毁会话是另一种选择
// first call:
$_SESSION['userip'] = $_SERVER['REMOTE_ADDR'];
//following calls:
if ($_SESSION['userip'] != $_SERVER['REMOTE_ADDR']) { session_destroy(); }
Run Code Online (Sandbox Code Playgroud)
你可能会遇到麻烦,因为可能会有一些用户经常更改IP ..其他$ _SERVER变量也可以使用(例如$ _SERVER ['HTTP_USER_AGENT']).(预定义变量)
还有一些其他的事情你可以做(加密SID,所以人们不会知道文件名,HTTPS总是很好,..)但这应该让你开始.Google肯定会找到一些关于" 会话安全性 "的好教程.
编辑:固定链接.