【问题标题】:Is Php session data secure?Php会话数据安全吗?
【发布时间】:2016-04-11 13:28:50
【问题描述】:

让我们假设一些经过验证的数据使用会话参数从一个 PHP 页面传递到另一个页面。

如何确定在第二个 php 页面上,这个会话数据仍然是我在第一个 php 页面上验证的数据?据我了解,会话数据存储在用户计算机上的 cookie 中。那么是什么阻止用户将损坏的数据注入到该会话 cookie 中呢?

因为在我的场景中,我需要依赖这样一个事实,即传递到第二页的数据已经过验证。

所以主要问题是如何将经过验证的数据从一个页面安全地传递到另一个页面?

提前非常感谢, 弗洛尔

【问题讨论】:

  • 没有。会话数据存储在服务器上。您可以将会话数据存储在 cookie 上,但是,php 通常不会这样做,您必须自己实现它。长话短说,会话应该足够安全。
  • cookie 中存储的所有内容都是会话 ID (PHPSESSID)。您的数据安全地保存在您在 php 设置中指定的目录中。您无法避免的是阻止用户更改他的 PHPSESSID,这也不是问题,因为他不会将信息添加到您的会话目录中。 PHP 只是丢弃无效的 id 并生成新的。
  • 为什么每周都会有人问这个奇怪的问题?

标签: php security session cookies


【解决方案1】:

会话数据本身存储在服务器端。唯一存储在客户端计算机上的是具有唯一标识符的 cookie,因此服务器知道要在服务器端加载哪个会话。

用户无法操作存储在会话本身中的数据,因此从这个意义上说,会话是安全的。

当然,cookie 本身可能会被用户窃取并被另一个用户使用(这种做法称为“会话劫持”)。您可以通过例如将会话锁定到他们的 IP 地址、浏览器版本等并使用 HTTPS 来保护他们免受人们嗅探连接的影响,从而保护您的用户免受这种情况的影响。

【讨论】:

  • 我知道会话劫持的做法。因为最近我读了《Browser Hackers Handbook》一书(非常适合关注安全的程序员阅读)这让我有点偏执我猜^^。但是会话劫持在这里并不是一个真正的问题,因为用户可能知道数据但他们不能改变它。在这方面非常感谢
【解决方案2】:

不存储会话数据是cookies。将会话数据存储在服务器端$_SESSION[]。例如

<?php
session_start();
// VALIDATION CODE
$_SESSION['name'] = 'Validation name';
?>

现在在第二页检查是否设置了此会话。如果已设置,则验证用户

<?php
session_start();
if(isset($_SESSION['name'])){
 // USER IS VALIDATED
}else{
// UNAUTHORiZED Access
}
?>

这将是服务器端,因此您无需一次又一次地验证。 谢谢

【讨论】:

  • 你可能想说:“......你不需要一次又一次地验证”。否则我不明白
【解决方案3】:

会话数据仅存储在服务器端,因此用户无法在会话中编辑任何内容,因此将保存假设第 1 页上验证的数据与第 2 页上的相同数据。

// Page1.php
// Set the session on page 1
session_start();
$_SESSION['myValue'] = 'secure_value';

// Page2.php
// Get the session on page 2
session_start();
$validValue = $_SESSION['myValue'];

不要在 cookie 中存储任何敏感信息,因为它们存储在客户端并且可以更改!

【讨论】:

    【解决方案4】:

    据我了解,会话数据存储在用户计算机上的 cookie 中。

    不是。

    会话数据存储在服务器上,并通过 cookie 与特定用户+浏览器相关联。

    通过编辑 cookie,用户只能:

    • 访问别人的 cookie(不太可能)
    • 获取一个新的空会话

    请注意,还有一个 会话 cookie,它是数据存储在客户端上的位置。这是一个没有过期数据的常规 cookie,当浏览器关闭时就会过期。这种类型的 cookie 通常用于在客户端存储会话 id。

    【讨论】:

    • 对胖手指投反对票感到抱歉 - 这是手机故障?
    • @Dagon — 你可以再次点击它来删除它
    • 是的,很抱歉它的电话,你试着打了你下来,它被锁定了,但我相信你会在代表损失中幸存下来:-)
    猜你喜欢
    • 2011-11-06
    • 2013-09-24
    • 2012-06-25
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多