当前位置: 首页 > 后端技术 > PHP

什么是CSRF攻击以及如何防范

时间:2023-03-30 02:21:15 PHP

欢迎安装使用随缘PHP留言板看板V1.0(带审阅功能)!textarea>随缘PHP留言簿V1.0版权所有:厦门随缘网络科技2005-2009
承接网站建设及系统定制提供优惠主机域名nametextarea>form>body>另存为attack.html,放在自己的网站http://www.sectop.com/attack....访问这个页面后会自动向pass.php提交参数目标程序,修改用户名为root,密码修改为root,然后我们去留言板发消息隐藏这个链接。管理权限后,他的用户名和密码全部改成root防御方式防范CSRF比防范其他攻击更难,因为CSRF的HTTP请求虽然是攻击者伪造的,但是是目标用户发送的.一般常见的预防方法如下:**1.检查网页源码2.检查内置隐藏变量3.使用POST,不要使用GET**检查网页源码在//pass.php头部添加如下红色字体代码验证数据提交if($_GET[“act”]){if(isset($_SERVER[“HTTP_REFERER”])){$serverhost=$_SERVER[“SERVER_NAME”];$strurl=str_replace(“http://”,“”,$_SERVER[“HTTP_REFERER”]);$strdomain=explode("/",$strurl);$sourcehost=$strdomain[0];如果(圣rncmp($sourcehost,$serverhost,strlen($serverhost))){unset($_POST);echo"";echo"alert('数据源异常!');";echo"location='index.php';";echo"";}}$username=$_POST[“用户名”];$sh=$_POST[“sh”];$gg=$_POST[“gg”];$title=$_POST[“标题””];$copyright=$_POST[“版权”]。”$password=md5($_POST[“密码”]);if(emptyempty($_POST[“密码”])){$sql=”更新gly集username='".$username."',sh=".$sh.",gg='".$gg."',title='".$title."',copyright='".$copyright.“'whereid=1″;}else{$sql="updateglysetusername='".$username."',password='".$password."',sh=".$sh.",gg='".$gg."',title='".$title."',copyright='".$copyright."'whereid=1";}mysql_query($sql);mysql_close($conn);echo"";echo"alert('修改成功!');";echo"location='pass.php';";echo"";}查看内置隐藏变量我们在里面建了一个隐藏变量和一个session变量表单,然后检查隐藏变量和会话变量是否相等,判断是否同一个网页调用phpinclude_once("dlyz.php");include_once("../conn.php");if($_GET["act"]){if(!isset($_SESSION["post_id"])){//生成唯一ID并使用MD5加密$post_id=md5(uniqid(rand(),true));//创建会话变量$_SESSION["post_id"]=$post_id;}//检查是否相等if(isset($_SESSION["post_id"])){//不相等if($_SESSION["post_id"]!=$_POST["post_id"]){//清除POST变量unset($_POST);echo"";}}……">td>tr>table>form>php}mysql_close($conn);?>