Php会话数据安全吗?

时间:2016-04-08 09:34:32

标签: php security session cookies

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

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

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

因此,主要问题是如何将验证数据从一个页面安全地传递到另一个页面?

非常感谢, FLO

4 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

不存储会话数据是cookie。存储服务器端的会话数据$ _SESSION []。例如

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

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

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

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

答案 2 :(得分:1)

会话数据仅存储在服务器端,因此用户无法在会话中编辑任何内容,因此将保存以假设第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中,因为这些信息存储在客户端和可以改变!

答案 3 :(得分:0)

  

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

不是。

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

通过编辑cookie,用户只能:

  • 访问其他人的cookie(非常不可能)
  • 获取新的空会话

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