我们使用PHP创建了一个数据库驱动的网站,使用了设置cookie,并且现在需要防止HTTP欺骗,有什么建议吗?我们是初学者,所以任何帮助都将不胜感激。
User-Agent
不安全,但这仍然比完全没有好。 - Andrew Moore欺骗攻击?身份被盗的唯一真正问题是 cookie 泄露。
你可以做的是,每当通过 HTTP 标头发送 cookie 时,检查其是否与发行的 IP 地址相匹配。例如:
<?php
session_start();
$rec = db_query('select count(*), ip from session where session_id = "' . session_id() . '"');
list ($last_count, $last_ip) = $rec[0];
if (! $last_count) {
# add it into the database
db_query('insert into session (session_id, ip) values (' .
'"' . session_id() . '", ' .
'"' . $_SERVER['REMOTE_ADDR'] . '"' .
')');
} else {
if ($last_ip != $_SERVER['REMOTE_ADDR']) {
print "user has stolen a cookie!";
}
}
?>
但是这可能会对那些由ISP分配动态IP地址的人产生负面影响。
我知道这个问题已经有答案了,但我想再加上另一种技巧,我自己使用的,对于管理登录特别有用。像往常一样使用会话(session),但将目录保护加入其中。
这样一来,如果一个会话被劫持,劫持者也必须能够获取目录登录。
我在论坛管理中使用这种技巧。某些论坛容易被黑客攻击,这样可以减少黑客进入并造成严重问题的机会。
DC