php防止csrf

来源:互联网 发布:开源c语言编译器哪个好 编辑:程序博客网 时间:2024/05/18 11:46

csrf是一种通过有权限用户在不知情的情况下点开了黑客的链接,黑客通过譔用户的权限进行一系利用户不知情的操作。
一般都是提交form表单。
在我不知道csrf以前,我判段用户是否登录都是在session存一个标识符,程序进行操作时都会判段此标识符是否存在。可是对csrf这个东西来说我这个安全措施是不存在的,想一想,用户的session是靠什么来进行区分的,靠的是存在cookie中的session_id,就是说只要黑客知道这个session_id并且此session还在生命周期内的话,黑客就可以伪造session_id盗用你的身份,可是有一个前提,黑客要知道你的session_id,黑客要知道session_id就是要获取你的cookie,可是黑客又不可能知道用户cookie,这时就可以用csrf了,通过一些手段,让用户访问黑客制作的网站,黑客把网站表单提交给被攻击的网站,如果用户打开这个网站提交了表单,session还活着,ok你就gg了,黑客不能得到你的cookie但是如果是你自己做的操作呢?所以csrf本质上是欺骗用户做一些操作。
用户可能被欺骗,所以我们需要做一些安全措施,防止出现csrf,黑客伪造表单用户上当点击的情况,既然cookie中的sessionid有可能是假的,那么我们就需要另一个验证,就可以使用token,具体就是在form表单中我们可以添加一个<input type="hideen" value="token_value" name="token"></input> 表单上传的时候,我们要判段这个token是否与后端程序的token是否相等例如这样
if($_SESSION['id']&&$_POST['token']==$_SESSION['token'])
{
echo '身份认证成功';
}else{
echo '身份认证失败';
}
那token是否能被黑客知道呢,有可能那就是他得到了你的用户和密码并且按下f12查看token…….有了这个手段想要再简单csrf就不存在了。

原创粉丝点击