我有一个由少数人使用的网络应用程序(仅限内部),并且正在使用存储在用户记录下并放置在各种链接中的随机 sessionID。
我遇到了一个问题,即用户相互发送链接,这允许他们劫持发件人的会话。
有哪些方法可以防止这种情况发生,同时仍然允许用户相互发送链接?
编辑:链接中的会话 ID(也包含 $username)只是与存储在用户表中的内容进行比较。&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 处理很差。