我有一个 php 站点,允许注册用户登录(使用有效密码)并根据他们的 UserID 设置会话。但是我很确定这是被劫持了,我在我的服务器上找到了我没有放在那里的“新”文件。我的网站清除了 SQL 注入和 XSS 的所有用户输入,但这一直在发生。有没有人对如何解决这个问题有任何想法?
3 回答
会话 cookie 劫持不应允许攻击者在您的服务器上创建新文件。它所能做的就是访问经过身份验证的用户的会话。这取决于您的代码和/或允许将任意文件上传到站点的 webroot 的服务器配置。
要检查远程攻击,获取可疑文件(searches.php、7.php.jpg)等的文件创建时间,然后梳理服务器的日志以查看当时发生的情况。如果您将会话 ID 与命中的其余部分一起记录,您可以轻松查看会话是否被劫持,因为它会在会话的生命周期内从两个或多个不同的 IP 使用。如果原始用户从一个 ISP 登录,然后突然出现跳转到一个完全不同的 ISP,则尤其明显。
当然,您的会话是如何实施的?饼干?PHP trans_sid(在隐藏的表单字段和查询字符串中传递会话)?trans_sid 尤其容易受到劫持,因为仅共享指向您站点的链接的行为也会传输会话 ID,并且您站点上的任何外部链接都会在 HTTP 引用中显示会话 ID。
PHP 专家提出的解决方案是在每次提交表单时使用唯一的键/令牌,请查看 net-tutes 的想法。
不要忘记查看 PHP 安全指南。. 它涵盖的主题包括 XSS、表单欺骗、SQL 注入、会话劫持、会话固定等。
请记住,始终在查询中使用正确的数据类型,例如在数字之前使用int
or函数,在字符串值之前使用函数。例子:intval
mysql_real_escape_string
$my_num = (int) $_POST['some_number'];
$my_string = mysql_real_escape_string($_POST['some_string']);
保护 PHP 应用程序的热门项目:
我会说你的“cookie”很容易猜到。
一些站点,当用户登录时,只创建一个 cookie,而验证码只是检查 cookie 的存在。
现在,如果我注册并登录到您的网站,然后打开您的 cookie 并注意到您只是存储了我的用户 ID,那么我可以将值操纵到其他一些用户 ID,瞧!
你明白了。