首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP会话的安全性如何?

PHP会话的安全性如何?
EN

Stack Overflow用户
提问于 2012-04-16 03:46:02
回答 4查看 35K关注 0票数 36

我主要是一个C++程序员,但我正在尝试学习一些PHP。

显然,实现web用户会话的方法是使用$_SESSION变量将用户的登录ID存储在cookie中。

难道某人不能只修改他们的cookie,给他们不同的特权,或者以不同的用户登录吗?

似乎这种身份验证机制只是让用户将他们的ID存储在一个文件中-然后信任他们不会更改它。

有什么东西可以阻止这种情况发生吗?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-16 03:48:39

否,会话存储在服务器上,用户无法访问。它用于存储整个站点的信息,例如登录会话。

下面是一个用法示例:

代码语言:javascript
复制
<?php
session_start();
if (password_verify($_POST['password'], $hash)) {
    $_SESSION['auth'] = true;
}
?>

然后,可以跨站点访问该会话,以检查用户是否已通过身份验证。

代码语言:javascript
复制
<?php
session_start();
if ($_SESSION['auth']) {
    echo "You are logged in!";
}
?>

用户不能编辑这些值,但是会话的ID通过cookie以长随机字符串的形式存储在计算机上。如果未经授权的用户获得对这些字符串的访问权限,则他们有可能访问该站点。

票数 24
EN

Stack Overflow用户

发布于 2012-04-16 03:49:57

如果这样做:

代码语言:javascript
复制
$_SESSION['user'] = $username;

那么$username将不会直接存储在cookie中。相反,将生成唯一的会话id并将其存储在cookie中。

您存储在$_SESSION中的信息只存储在服务器端,而不会发送到客户端。在客户端的后续请求中,当您执行session_start()时,服务器将通过存储在cookie中的id加载会话数据。

它相对安全。唯一可能发生的事情是,有人可以截取会话id,从而窃取真正的用户会话。不过,HTTPS可以防止这种情况发生。

票数 6
EN

Stack Overflow用户

发布于 2017-01-21 23:32:06

由于您是一名C++程序员,您只需要知道客户端可见的会话只是不同地址空间(服务器)上的一个指针,因此无法从客户端模式访问该会话。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10165424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档