我是PHP新手,不熟悉会话管理。我正在创建一个电子商务网站,所以我需要创建一个防黑客会议。为此,我搜索了很多关于如何防止会话劫持的内容。我所读到的资料显示,我在代码中包括了以下功能:
\\some saying to use this
session_start();
session_regenerate_id(true);
\\some others saying to use this
session_start();
session_regenerate_id(); …同时使用HTTPS/TLS。在另一个堆栈溢出post中,我遇到了这样的东西:
但我不明白这些。对我来说,这只是理论上的;相反,我想要的是一些PHP代码做这些事情--或者任何让这些东西实现的网站,以我可以看到的PHP代码和我们作为例子(而且理想的情况下有一些解释来支持它)。
发布于 2015-09-13 11:30:30
会话劫持-当有人知道您的会话标识号,提供它给服务器,例如,登录您的priveleges。
XSS -跨站点脚本,它与过滤严重的表单相连接,这些表单允许坏人实现他们的javascript代码,例如,cookie文件。它们是两种不同的攻击形式。
关于防止会话劫持的一些技巧: 1)设置php.ini指令:
session.use_only_cookies = 1 -> for using only cookie based session ids
session.use_trans_sid = 0 -> disable showing PHPSESSID in browser url2)关于届会
session_start();// -> starts your session.
//Your browser will accept http header with session id and store it.
//You will be identified by this session id, usually PHPSESSID看起来是这样的:
GET / HTTP/1.1
Host: example.org
User-Agent: Mozilla Compatible (MSIE)
Accept: text/xml, image/png, image/jpeg, image/gif, */*
Cookie: PHPSESSID=1234会话开始时,您可以向php全局数组$_SESSION提供任何数据,如
$_SESSION['var'] = 'abc';如果有人知道您的PHPSESSID,他可以向服务器发送相同的http头并开始使用它,就像他是您一样。
因此,避免这种情况的最佳方法是:
( a)每次提供任何重要数据时都使用session_regenerate_id()。它将删除旧的会话号并生成一个新的会话号。
( b)在$_SESSION中保存手指: ip地址和/或浏览器代理。如果他们不一样的话,那不是你。例如:
session_start();
if (isset($_SESSION['HTTP_USER_AGENT']))
{
if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT']))
{
//some code
}
}
else
{
$_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
}( c)使用SSL提供敏感数据。
希望,你会发现它有用的。
https://stackoverflow.com/questions/32547916
复制相似问题