我想为更安全的会话创建一个会话指纹。我看到了一个使用
的例子$fingerpring = $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'];
这似乎是合理的,除了对会话期间IP地址可能会发生变化的用户造成的不便。
我浏览了php.net并看到了一些可以使用的东西。我想增加安全性,但也减少了对用户的不便。我想出的是什么问题?
$fingerprint = sha1(
$_SERVER['HTTP_ACCEPT_LANGUAGE'].
$_SERVER['HTTP_CONNECTION'].
substr($_SERVER['REMOTE_ADDR'], 0, 5).
$_SERVER['HTTP_USER_AGENT']
);
这些$ _SERVER变量中的任何一个会在会话期间发生变化并导致用户被“踢掉”(除了罕见的IP地址更改)吗?我还可以在列表中添加其他任何内容吗?
编辑:我已经使用了https和Slim的Csrf Guard。
答案 0 :(得分:0)
如果您已经在使用HTTPS,那么您可以采取的一项基本原则安全改进是在PHP.ini文件中添加/设置此行:
session.cookie_secure=1
当Deceze纠正时 - 这会在cookie上设置安全标志,以防止浏览器通过不安全的连接提交cookie。 Cookie仍然是纯文本(通过加密的HTTPS)。
您还可以使用其他一些PHP.ini设置来提高会话安全性:
session.cookie_httponly=1
session.save_path=/setyourownpathhere/
session.use_only_cookies=1
session.entropy_file=/dev/urandom
session.hash_function=whirlpool
这些值将进一步降低会话ID值被劫持的可能性。会话的id值本身就是会话用户的“指纹”。