这已被问过很多次了。我很好奇是否认为以下代码提供了相当重要的安全级别。还有其他如果我应该考虑一下吗?
一些假设:
以下代码:
<?php
session_start();
$time = time();
$ip = $_SERVER['REMOTE_ADDR'];
if ($time - $_SESSION['time'] > 5)
{
//function to log out user...//echo "logged Out,Time";
}
elseif ($ip !== $_SESSION['ip'])
{
//function to log out user...//echo "logged out,IP";
}
elseif ($_SERVER['HTTP_REFERER'] !== "http://server.com/somePage.php")
{
//function to log out user...//echo "logged out,Refer";
}
else
{
//do sensitive stuff
}
$_SESSION['time'] = $time;
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
?>
编辑:
这只是“敏感”领域的一些基本内容。可能是Facebook级别。我不希望任何人进入谁不应该。但如果他们这样做了,就会出现一些问题,但是核弹头不会发动。
5秒是我测试的例子,显然它会更长。
布赖恩,
如果$ _SERVER可以被欺骗,是否有更好的方法来确定用户的源ip?
答案 0 :(得分:1)
一些假设:
- 如果用户在5秒钟内什么都不做,请注销他。
- 如果用户不是来自somePage.php,则将其注销。
- 如果用户的IP地址发生变化,请注销他。
您将使您的用户(可能不是唯一的男性)疯狂。尤其是Tor用户。
实现secure PHP sessions所需要做的事情很少:
session_regenerate_id(true);
。