会话cookie http和安全标志 - 你如何设置这些?

Jef*_*eff 30 php linux security

刚收到安全审计的结果 - 除了两件事之外,一切都清楚了

没有http标志的会话cookie.

会话cookie没有安全标志设置.

应用程序在php中编码,修复建议如下:

  1. 使用仅http标志设置会话cookie
  2. 用安全标志设置会话cookie

我查看了示例,但没有完全理解如何在Linux服务器上实现.我无法访问.ini文件.是否可以在htaccess文件中设置它们?

或者,我在代码中实现的方式和位置?

Per*_*rry 42

您可以在发送标题之前设置它们.只需在代码中添加以下这些行即可.

<?php
// **PREVENTING SESSION HIJACKING**
// Prevents javascript XSS attacks aimed to steal the session ID
ini_set('session.cookie_httponly', 1);

// **PREVENTING SESSION FIXATION**
// Session ID cannot be passed through URLs
ini_set('session.use_only_cookies', 1);

// Uses a secure connection (HTTPS) if possible
ini_set('session.cookie_secure', 1);
Run Code Online (Sandbox Code Playgroud)


eis*_*eis 38

既然你要求.htaccess,并且这个设置是PHP_INI_ALL,那就把它放在你的.htaccess中:

php_value session.cookie_httponly 1
php_value session.cookie_secure 1
Run Code Online (Sandbox Code Playgroud)

请注意,会话cookie仅在此之后与https请求一起发送.如果你在非安全的http页面中丢失一个会话,这可能会令人感到意外(但是在评论中指出,这首先是配置的重点......).


dan*_*317 8

我知道这特别说明他们无权访问 .ini 文件,但对于那些通过搜索结果到达这里的人,.ini 设置如下所示:

session.cookie_httponly = 1
session.cookie_secure = 1
Run Code Online (Sandbox Code Playgroud)

默认情况下,cookie_secure 已存在于大多数 ini 文件中,但已被注释掉。所以取消注释该行并设置 1。httponly 行也已经存在但没有注释掉但默认为 0。所以你必须找到它并设置它。