Php 如何防止HTTP欺骗?
我们已经创建了一个数据库驱动的网站,使用PHP和设置cookies,现在需要防止HTTP欺骗,关于如何做到这一点有什么想法吗?我们是这方面的初学者,所以任何帮助都将是巨大的欺骗什么?HTTP只是一种传输数据的协议,它本身并不会被欺骗 要做的不是防止信息欺骗,而是永远不要信任客户机。对于cookie,存储一个散列伪随机值,在接受cookie数据之前与数据库进行比较 更新: 考虑到您特别关注的是cookies,我将更深入一点。在存储cookies时,有两件主要的事情需要关注Php 如何防止HTTP欺骗?,php,spoofing,Php,Spoofing,我们已经创建了一个数据库驱动的网站,使用PHP和设置cookies,现在需要防止HTTP欺骗,关于如何做到这一点有什么想法吗?我们是这方面的初学者,所以任何帮助都将是巨大的欺骗什么?HTTP只是一种传输数据的协议,它本身并不会被欺骗 要做的不是防止信息欺骗,而是永远不要信任客户机。对于cookie,存储一个散列伪随机值,在接受cookie数据之前与数据库进行比较 更新: 考虑到您特别关注的是cookies,我将更深入一点。在存储cookies时,有两件主要的事情需要关注 不要存储实际数据 根据数
- 防止会话固定
每X个请求重新生成一个新的
,以减少攻击者窃取该id的时间会话\u id
- 唯一标识客户机
使用IP和/或用户代理唯一标识客户端,并对照会话中存储的值检查每个页面加载上的值。这实际上是唯一标识客户机的两个选择
会话id
被泄露,你就完蛋了
同样,有关详细说明,请参见。欺骗?身份泄露的唯一真正问题是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!";
}
}
?>
我知道这已经得到了回答,但我想添加另一种我使用的技术,它对管理登录特别有用。像往常一样使用会话,但在混合中添加目录保护
这样,如果会话被劫持,劫持者还必须能够获得目录登录
我使用这种技术来管理论坛。某些论坛很容易被黑客入侵,这降低了黑客进入并引发严重问题的机会
DC如果有帮助的话,我们需要检测欺骗HTTP消息的企图?也许你可以描述一个你认为可能发生的具体例子。如果有人发现PHP用来管理会话的cookie,什么是阻止另一台机器上的人手动将cookie设置为相同的值并假装是你?一旦我们完成了安全检查,就会上传cookieissues@Jermain:然后点击我的答案左边的复选标记,让答案成为您接受的答案。我尚未注册,但一旦注册,我将will@Jermain,您已注册。如果此答案有用,您只需单击答案左侧的绿色复选标记即可。很抱歉,这是一个新问题,只是做了一个简单的评论,关于第2点“唯一标识客户”,这可能会导致问题。有些客户在每次请求时都来自不同的ip,这迫使他们必须不断登录。这是由常见的代理和负载平衡系统造成的。在安全的情况下,我不会信任x-forwarded for和其他头文件,例如user agent。所以我根本不想用第二点这个问题实际上是胡说八道,所以这个答案为一种解释提供了很好的建议。是的,我确实提到过我是个新手,所以考虑到这一点,我开始做一些我不确定这个“建议”有多有用的事情。这不仅能抓住那些拥有动态IP地址的人,还能抓住那些使用移动设备(如笔记本电脑)的人。从一个办公室移动到另一个办公室可能足以让您的代码将它们识别为cookie theive。我不推荐这个。