我主要是C ++程序员,但我试图拿起一些PHP。
显然是为了实现Web用户会话的方式是将用户的登录ID存储在使用$ _SESSION变量的cookie。
是没可能有人只是修改他们的饼干,给他们不同的权限或登录为不同的用户?
这样看来,认证机制只是让用户存储他们的ID在一个文件 - 然后就信任他们不会去改变它。
有什么阻止呢?
谢谢!
我主要是C ++程序员,但我试图拿起一些PHP。
显然是为了实现Web用户会话的方式是将用户的登录ID存储在使用$ _SESSION变量的cookie。
是没可能有人只是修改他们的饼干,给他们不同的权限或登录为不同的用户?
这样看来,认证机制只是让用户存储他们的ID在一个文件 - 然后就信任他们不会去改变它。
有什么阻止呢?
谢谢!
不,一个会话存储在服务器上,并且不能被用户访问。 它是用来存储整个网站的信息,如登录会话。
下面是使用的一个示例:
<?php
session_start();
if (password_verify($_POST['password'], $hash)) {
$_SESSION['auth'] = true;
}
?>
会话然后可以在整个网站访问,以检查是否该用户已被验证。
<?php
session_start();
if ($_SESSION['auth']) {
echo "You are logged in!";
}
?>
然而,在会话的ID是通过一个cookie作为一项长期的随机字符串存储在计算机上的用户无法编辑这些值。 如果未授权用户获得访问这些字符串,可以为他们访问该网站。
为您的应用程序使他们的PHP会话仅安全。 PHP的会话将会给用户一个伪随机字符串(“会话ID”),他们与自己的身份,但如果该字符串被攻击者截获,攻击者可以伪装成该用户。
此信息摘自“会话管理基础知识”中的PHP手册 ,但简化了一下。 有些东西可能已经错过。 请务必通过阅读为好。
始终使用HTTPS
启用session.use_strict_mode
:
$userId-
) 启用sessions.use_only_cookies
和禁用session.use_trans_sid
Referer
头 定期重新生成会话ID和再生后不久,老无效的会话ID
任选地跟踪在附加信息$_SESSION
涉及所述请求(IP地址,用户代理字符串,等)
回答这个问题,需要2种方法:
PHP会话ID是够硬猜测大多数用例。 并不比其他广泛使用的系统更难或更硬。
信任只有一个会话cookie(只有一个会话cookie是否存在等)似乎并没有走很远的安全,明智的我,无论在哪里这个会话cookie来自 - PHP或其他地方。
因此,简而言之:PHP会话的安全,因为你对他们的使用,使他们成为。 这是任何基于会话cookie的系统,我知道的事实。
如果做到这一点:
$_SESSION['user'] = $username;
然后$username
不会被直接存储在cookie中。 而不是唯一的会话ID会被生成和存储的cookie里面。
您存储在信息$_SESSION
只存储在服务器端,并不会发送到客户端。 由客户端的后续请求,服务器将存储在cookie中,当你做的ID载入会话数据session_start()
。
它相对安全。 可能发生的唯一的事情就是有人能截获会话ID,从而窃取用户真正会话。 HTTPS可以防止这种情况发生,虽然。
无论答案你在这个主题中,您最有可能不会,因为有对话题如此多的不同意见得到满足。 甚至有写在一般性会议和PHP安全整本书。
希望各位能到这里最好的答案很可能是“会话,你希望他们是安全的”。 更多的工作和注意事项的数量较多,显然使它们更加安全的使用,但实现本身会消耗更多的时间。 正如一切你多少来衡量安全是你需要足够安全的一个。
既然你是一个C ++程序员,你只需要知道,客户端看到的会议只是在不同的地址空间(服务器),因此,该会话不能从客户端模式访问的指针。