首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >停止会话劫持

停止会话劫持
EN

Stack Overflow用户
提问于 2012-04-03 21:12:45
回答 5查看 1.6K关注 0票数 2

有个黑客联系我,说我的网站会被会话劫持,他说我的文本框很容易被会话劫持。

有没有办法保护文本框不受会话劫持的影响?我正在用它来转义并防止sql注入。

这是我的表格

代码语言:javascript
复制
      <form name="hide" action="hideboxupdate.php" method="post">
          <input type="radio" name="yes" value="1" />
  Yes<br />
  <input type="radio" name="no" value="0" />
  No
  <input name="submit" type="submit" value="Submit" />
        </form>

这是我的hideboxupdate.php

代码语言:javascript
复制
<?php

$yes= mysql_real_escape_string($_POST['yes']);
$yes2 = strip_tags($yes);




$no= mysql_real_escape_string($_POST['no']);
$no2 = strip_tags($no);
?>
             <?php

             if (isset($yes2)) {





   $result3333 = mysql_query("UPDATE users SET hide_box='1' WHERE username = '".$_SESSION['username']."'")
or die(mysql_error());  

echo "Users now can not see your user box";
}

 if (isset($no2)) {


$result3333 = mysql_query("UPDATE users SET hide_box='0' WHERE username = '".$_SESSION['username']."'")
or die(mysql_error());  

echo "Users can now see your box on your profile";

}
?>

有什么方法可以防止会话劫持吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-04-03 21:19:11

创建会话、浏览器数据和ip的md5,并将其放入数据库,在每次页面加载时检查是否仍然相同,如果不是,则销毁会话。

票数 5
EN

Stack Overflow用户

发布于 2012-04-03 21:24:42

当您将页面与表单一起发送时,请包含一个带有随机字符串的隐藏输入,您还可以将该字符串写入数据库中的用户记录,如下所示:

代码语言:javascript
复制
 <input type="hidden" name="csrf" value="0432985732409857243"/>

当用户提交表单时,您将验证表单的隐藏数据csrf是否与存储在数据库中的值相匹配。如果csrf匹配,这意味着更新是好的,您也删除了csrf;如果csrf不匹配,则不进行更新。

这保护了用户,因为只有他才能提交该表单,而且只能提交一次。

票数 3
EN

Stack Overflow用户

发布于 2012-04-03 21:26:53

这并不能防止您的代码受到攻击。人们只需在他们的本地主机上创建一个表单,并使用与您使用的相同变量名发布到您的服务器上,就可以将任意数据发布到您的表单。

这只是一个例子。使用白名单方法。在服务器端,创建一个数组,其中包含表单中预期为正确输入的每个变量的所有可能值(对于<input>,<textarea>,显然是不可能的)。

此外,由于用户在登录后的每个logout....use session_regenarate_id之后都在谈论会话fixation...destroy会话(使用md5 + salt加密)。不要在url中传播session_id。

几点建议:(由Chris Shiflett撰写……一位著名的网络安全专家)

http://shiflett.org/articles/session-hijacking

http://shiflett.org/articles/session-fixation

http://shiflett.org/articles/foiling-cross-site-attacks

http://shiflett.org/articles/the-truth-about-sessions

http://shiflett.org/blog/2006/jan/addslashes-versus-mysql-real-escape-string

希望这能帮上忙。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9994008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档