在PHP中使用会话ID作为文件名是否安全?

whe*_*ere 3 php security session

在PHP Web应用程序中,我使用会话ID作为文件名.在某个时刻,这些文件被删除,代码如下

unlink('tmp/'.session_id());
Run Code Online (Sandbox Code Playgroud)

我知道用户可以更改他/她的会话ID.因此,我想知道会话ID是否可以更改为"/../../etc/passwd".

我现在的问题是,如果这种"黑客攻击"成为可能,以及如何最好地保护我的代码.

提前谢谢你的回答!

评论:我知道有关用户劫持其他用户会话的危险和预防方法,这在我的案例中不是问题.

Séb*_*uld 5

除非你有一个非常搞砸的设置,否则用户永远不能直接更改他的会话ID,因为这永远不应该是一个直接参数 - 它应该用于验证它是否存在,但永远不会创建一个任意的会话在那个名字上.

但是,如果您的系统不是这种情况,建议清理: preg_replace("#([^0-9a-f]+)#i","",session_id());