加密会话变量是否有安全优势?

8

它能够防止会话劫持吗?如果不能,我该如何使我的php会话更加安全?

2个回答

15
发送给客户端的是会话标识符而不是会话变量。这些会话标识符通常设置为客户端中的 cookie。当然,如果有人从用户的浏览器或客户端获得会话标识符(例如,通过使用跨站点脚本攻击),他可以在自己的客户端中设置会话标识符并冒充其他用户。
然而,会话变量通常指 $_SESSION 数组中的值。请参见 http://www.php.net/manual/en/function.session-start.php 以获取示例。这些值永远不会被发送到客户端。
就保护会话标识符而言,我已经在第一段中解释过它们是作为浏览器中的 cookie 存储的。在 HTTP 会话中,cookie 在服务器和客户端之间以明文形式传输。这容易受到窃听的影响(例如,您数据包所经过的路由器上的某个人可能会捕获您的数据包并从中读取会话标识符)。克服这个问题的最佳方法是改用 HTTPS。

0

我猜这取决于你所说的“安全利益”的含义。如果你的应用程序在共享主机上,并且你的会话数据保存在某个不安全的中央位置,可能会被其他用户读取,那么从技术上讲,加密会话确实有一定的安全优势。然而,更好的做法是花时间和精力编写自己的会话存储机制,以便首先不将它们存储在不安全的位置;特别是考虑到加密很容易做得完全错误,从而给自己带来虚假的安全感。


+1...我认为这更好地回答了问题。会话变量本身不会被公开(只要您不做一些暴露它们的愚蠢事情),但是如果您在配置不良的共享主机上,在那里有一个通用的tmp/session存储位置,那么服务器上的其他站点就可以访问它们。 - Ben D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接