【发布时间】:2012-09-22 21:41:40
【问题描述】:
我有一个由少数人使用的网络应用程序(仅供内部使用),并且正在使用存储在用户记录下并放置在各种链接中的随机 sessionID。
我遇到了用户相互发送链接的问题,这使他们能够劫持发件人的会话。
有哪些方法可以防止这种情况发生,同时仍允许用户相互发送链接?
编辑: 链接中的会话 ID(也包含 $username)只是与存储在 User 表中的内容进行比较。 &incorrectLogin 只是打印一个错误,然后是 die;
if ($sid) {
$sth = $dbh->prepare("SELECT * FROM tbl_User WHERE UserID = '$username'");
$sth->execute();
$ref = $sth->fetchrow_hashref();
$session_chk = $ref->{'usr_sessionID'};
unless ($sid eq $session_chk) {
&incorrectLogin;
}
}
问题在于,如果有人使用由其他人创建的链接,则页面将按照他们的身份加载。我没有使用 cookie,我记得过去有人告诉我 CGI perl cookie 处理很差。
【问题讨论】:
-
我们需要了解更多。你用什么来认证?您是否在用户的机器上设置了 cookie?为什么要使用 sessionId 的查询字符串?我们可以看看一些代码吗?
-
抱歉。我在原帖中添加了一些附加信息。