php - XSS是否安全

时间:2010-09-05 12:15:28

标签: php cookies xss

我需要设置一个cookie来保持用户登录状态。我要哈希用户名,密码和IP。我的代码:

login process:
$hashed = md5($username.$pwd.IP);
setcookie('userstate', $username.':'.$hashed);

restore user state:
$vars = split(':', $_COOKIE['userstate']);
pseudo: get user with username in $vars[0]
$hashed = md5($username.$pwd.IP);
if($hashed == $vars[1]) return true;
else return false;

这种方式对XSS攻击是否安全?

2 个答案:

答案 0 :(得分:5)

只有在向客户端输出内容时才能进行XSS攻击。因为你不是,所以不可能。

另一个攻击媒介是SQL注入。您不能相信$ _COOKIE值的输入。因此,当您尝试从数据库中获取信息时,您必须将其转义。

答案 1 :(得分:0)

您粘贴的代码段是 NOT SECURE 。假设攻击者获取cookie,则可以找出用户的密码。这很糟糕 - 因为用户倾向于在网站上重复使用密码。

如何检索密码?字典攻击。用户名和IP地址很容易搞清楚。攻击者只需要使用密码字典,以你正在做的方式生成哈希,然后将其与cookie中的哈希进行比较。

您的实现中缺少的是攻击者不知道的服务器端密钥。请参阅此页面了解Spring Security generates the cookie的方法 - 您应该做类似的事情。