我认为我的PHP应用程序正被会话劫持?

时间:2010-04-18 18:27:40

标签: php session xss session-hijacking

我有一个php网站,允许注册用户登录(使用有效的密码)并根据用户ID设置会话。但是我很确定这是被劫持的,我在我的服务器上发现了“新”文件,我没有把它放在那里。我的网站清除了SQL注入和XSS的所有用户输入,但这种情况一直在发生。有没有人对如何解决这个问题有任何想法?

3 个答案:

答案 0 :(得分:2)

会话cookie劫持不应允许攻击者在您的服务器上创建新文件。它所能做的只是访问经过身份验证的用户会话。这取决于你的代码和/或服务器的配置,它允许将任意文件上传到网站的webroot。

要检查远程危害命中,请获取可疑文件(searching.php,7.php.jpg)等的文件创建时间,然后梳理服务器的日志以查看当时发生的情况。如果您正在记录会话ID以及其他命中,您可以轻松查看会话是否被劫持,因为它将在会话的生命周期内从两个或多个不同的IP中使用。特别明显的是,如果原始用户从一个ISP登录,然后突然出现跳转到完全不同的ISP。

当然,您的会话如何实施?饼干? PHP trans_sid(在隐藏表单字段和查询字符串中传递会话)? trans_sid特别容易受到劫持,因为仅仅是分享链接到您的站点也会传输会话ID的内容的行为,并且您站点上的任何外部链接都会在HTTP引用中显示会话ID。

答案 1 :(得分:1)

PHP专家提出的解决方案是在每次提交表单时使用唯一的键/令牌 have a look at the idea here at net-tutes

<强> Don't forget have a look at the PHP Security Guide. 即可。它涵盖的主题包括XSS,Form Spoofing,SQL注入,会话劫持,会话固定等。

请记住,始终在查询中使用正确的数据类型,例如在数字前使用intintval函数,在字符串值中使用mysql_real_escape_string函数。例如:

$my_num = (int) $_POST['some_number'];
$my_string = mysql_real_escape_string($_POST['some_string']);

<强> You may also use the prepend statements for your queries.

保护PHP应用程序的热门项目:

答案 2 :(得分:0)

我以前会说你的“饼干”很容易猜到。

有些网站,当用户登录时,只需创建一个cookie,验证码只会检查cookie的存在性。

现在,如果我注册并登录您的网站,然后打开您的cookie并注意您只存储我的用户ID,那么我可以将该值操纵到其他用户ID并瞧!

你明白了。