PHP会话安全

使用PHP保持会话安全性的标准是什么? 整个互联网都有细节,而且它与时间有关,所有这些都落在了一个区域!

0
2019-05-04 01:28:21
资源 分享
答案: 9

您需要确保会话信息安全。 通过考虑您的php.ini或使用phpinfo(),可以找到会话设置。 _ session.save _当然_通知您保存它们的位置。

检查文件夹以及它的父母的批准。 它不应该是公共(/ tmp)或由普通Web服务器上的其他各种Internet网站提供。

如果您仍然打算使用php会话,则可以通过转换_ session.save _ course _来将php设置为使用其他文件夹,或者通过转换_ session.save _ trainer _将数据库中的信息保存在数据库中。

您可以在php.ini中设置_ session.save _当然_(某些运营商允许)或在网站原始文件夹php_value session.save_path "/home/example.com/html/session"的a.htaccess文档中为apache + mod_php设置。 您还可以在运行时使用_ session_save_path()_进行设置。

检查克里斯·希弗莱特(Chris Shiflett)的教程Zend_Session_SaveHandler_DbTable进行设置以及其他会话训练器。

0
2019-12-04 07:14:07
资源

要确保会话安全可靠,有许多要点:

  1. 在确认客户或执行精细程序时使用SSL。
  2. 每当安全度调整(例如访问)时,恢复会话ID。 如果需要,您还可以根据需要恢复会话ID。
  3. 会议休息
  4. 不要使用寄存器全局变量
  5. 在Web服务器上存储验证信息。 也就是说,不要在cookie中发送用户名等信息。
  6. 检查$_SERVER['HTTP_USER_AGENT']。 这包括会话劫持的一个小障碍。 您还可以检查IP地址。 然而,这会给那些因为负载稳定在许多网络链路上而改变IP地址的客户造成麻烦(在我们的设置中也是如此)。
  7. 锁定文档系统上的会话的可访问性或使用个性化会话处理
  8. 对于精细的程序,考虑要求访问的客户再次提供其身份验证信息
0
2019-05-22 14:14:46
资源

如果您使用的session_set_save_handler(),您可以设置自己的会话培训师。 例如,您可以将会话存储在数据源中。 将php.net评论描述为数据源会话培训师的示例。

如果您有许多Web服务器,数据库会话也是非常好的,否则如果您正在使用基于文档的会话,您肯定需要确保每个Web服务器都可以访问同一个文件系统来读/写会话。

0
2019-05-21 11:23:40
资源

在我的经验中,使用IP地址实际上并不是最有效的建议。 举个例子 ; 我的工作场所有2个IP地址,可以依赖于负载,而且我们经常面临使用IP地址的问题。

相反,我已经将会话保存在我的Web服务器上的域名的不同数据库中。 以这种方式,文档系统上的任何人都无法访问该会话细节。 这对于3.0之前的phpBB来说实际上很方便(他们已经修复了这个)但它仍然是我认为的一个很好的建议。

0
2019-05-10 18:02:38
资源

PHP会话和安全性(除会话劫持之外)的主要问题在于您保留的设置。默认情况下,PHP会将操作系统温度目录站点中的文档中的会话信息存储起来。 由于没有独特的想法或准备,这是一个全球清晰的目录网站,因此您的每个会话详细信息都公开给任何具有Web服务器可访问性的人。

在多个Web服务器上保持会话时。 那么将PHP切换到客户处理会话时肯定会好得多,因为它会将您的特定功能调用到CRUD(创建,读取,升级,删除)会话信息。 然后,您可以将会话详细信息存储在数据库或内存缓存中,以确保所有应用程序Web服务器都可以访问这些信息。

如果你加入一个普通的Web服务器,保存你自己的会话可能会更有用,因为它肯定会允许你将它存储在数据库中,在大多数情况下,你可以在文件系统之后控制它。

0
2019-05-08 14:49:58
资源

我当然会检查IP和用户代理,看看它们是否转换

if ($_SESSION['user_agent'] != $_SERVER['HTTP_USER_AGENT']
    || $_SESSION['user_ip'] != $_SERVER['REMOTE_ADDR'])
{
    //Something fishy is going on here?
}
0
2019-05-07 21:45:02
资源

一个标准是每次会话的安全度调整时调用session_regenerate_id。 这有助于防止会话劫持。

0
2019-05-07 18:31:17
资源

这非常不重要且也很明显,但在每次使用后都要确保session_destroy。 如果客户没有清楚地注销,这可能很难实现,因此可以准备好计时器来执行此操作。

下面是setTimer()和clearTimer()上的优秀教程

0
2019-05-07 18:29:58
资源

我认为重要的麻烦(在PHP 6中解决)是register_globals。 现在,除了register_globals之外,使用的典型方法是使用$_REQUEST$_GET$_POST数组。

“正确”意味着要做到这一点(从5.2开始,尽管那里有一个小小的错误,但是从6开始安全,这很快就会到来)是通过过滤器

所以相反:

$username = $_POST["username"];

你当然会这样做:

$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);

或者简单地说:

$username = filter_input(INPUT_POST, 'username');
0
2019-05-07 17:40:37
资源