网站如何防止跨站POST提交攻击

建站学习网 2,278次浏览

摘要:我们网站上经常会有POST表单,通过表单提交一些有用的数据。但在实际应用中,网站上的表单会被别人恶意的POST提交垃圾数据,挤占我们的网站数据库。那么如何防止跨站POST提交攻击呢? 下面建站学习网介绍一下防止……

我们网站上经常会有POST表单,通过表单提交一些有用的数据。但在实际应用中,网站上的表单会被别人恶意的POST提交垃圾数据,挤占我们的网站数据库。那么如何防止跨站POST提交攻击呢?

下面建站学习网介绍一下防止跨站POST提交攻击的方法。

首先我们可以在自己的表单中添加token验证,就是添加一些自动生成的字段来验证。如果这些字段不正确,将无法提交表单。

在form表单中添加隐藏域字段:

<?php $module=mt_rand(100000,999999);?>
<input type='hidden' name='module' value='<?php echo $module;?>'/>
<input type='hidden' name='timestamp' value='<?php echo time();?>'/>
<input type='hidden' name='token' value='<?php echo md5($module.'#$@%!^*%*ty'.time());?>'/>
<input type='hidden' value='<?php echo home_url();?>' name='tougao_form' />

在接收的文件中,添加以下的接收数据进行验证;

$module = $_POST['module'];
$timestamp = $_POST['timestamp'];
$token = md5($module.'#$@%!^*%*ty'.$timestamp);
if($token != $_POST['token']){
echo('非法提交!');
exit();
}

再者,给我们的接收文件添加另外一种验证,就是验证表单数据的发送方的域名与自己网站域名是否一致,如果不一致将禁止提交表单。

<?php
$fromurl = preg_replace('/^www\./i', '', preg_replace('/^([^:]+:\/\/)?(([^\/]+\.)+[^\/]+).*/i', '$2', $_SERVER['HTTP_REFERER']));
if($fromurl != str_replace('www.', '', $_SERVER['HTTP_HOST'])){
exit();
}
?>

通过这二段代码的验证,就可以有效的防止跨站POST提交攻击了。

随机内容