4

我正在使用 PHP 开发 RIA。为了防止会话劫持,我引入了一个令牌,在登录时生成,基于盐、ISO-8601 周数和用户的 IP。

$salt      = "blahblahblah";
$tokenstr  = date('W') . $salt . $_SERVER['REMOTE_ADDR'];
$token_md5  = md5($tokenstr);
define("token_md5", $token_md5); 

目前,它通过 GET 或 POST 与每个请求一起传递,但我想知道是否可以通过将其作为 cookie 提供来避免这种情况,因为它取决于用户的 IP。我刚刚在学习课程,所以我想知道这样做是否有任何安全问题?这是个坏主意吗?

4

3 回答 3

8

用户保留的任何数据都可能被盗;访问者发送的任何数据都可能被欺骗。最好在$_SESSION会话打开时存储远程 IP,并将远程 IP 与每个请求进行比较。如果它们不匹配,则可能是劫持。生成一个新 ID 并让用户重新登录。

于 2009-11-22T02:48:37.110 回答
7

session_regenerate_id()非常适合防止会话劫持。

session_regenerate_id— 使用新生成的更新当前会话 id

为每次页面访问持续轮换 session_id。使劫持不断移动的目标变得非常困难。

于 2009-11-22T01:41:47.080 回答
0

我使用与您相同的方法完成了 RIA,并且我只是在应用程序上设置了 SSL 以确保安全。由于 Flex 和远程处理是无会话的。我建议使用 SSL。我的同事还开发了一个用户登录/注销的应用程序,他做了同样的事情。

于 2009-11-22T01:42:33.250 回答