php xfocus防注入资料

时间:2021-05-26

这里没有太深的技术含量,我只是比较简单的谈了谈。(以下操作如无具体说明,都是基于PHP+MySQL+Apache的情况)在现在各种黑客横行的时候,如何实现自己php代码安全,保证程序和服务器的安全是一个很重要的问题,我随便看了下关于php安全的资料,并不是很多,至少比asp少多了,呵呵,于是就想写点东西,来防止这些可能出现的情况。这里没有太深的技术含量,我只是比较简单的谈了谈。(以下操作如无具体说明,都是基于PHP+MySQL+Apache的情况)
先来说说安全问题,我们首先看一下两篇文章:
http:///a.php?id=1asdfasdfasdf呢,我们这个是符合上面的规则的,但是呢,它是不符合要求的,于是我们为了可能其他的情况,我们再构建一个函数来进行检查:


functionverify_id($id=null)
{
if(!$id){exit('没有提交参数!');}//是否为空判断
elseif(inject_check($id)){exit('提交的参数非法!');}//注射判断
elseif(!is_numeric($id)){exit('提交的参数非法!');}//数字判断
$id=intval($id);//整型化

return$id;
}

呵呵,那么我们就能够进行校验了,于是我们上面的程序代码就变成了下面的:

if(inject_check($_GET['id']))
{
exit('你提交的数据非法,请检查后重新提交!');
}
else
{
$id=verify_id($_GET['id']);//这里引用了我们的过滤函数,对$id进行过滤
echo'提交的数据合法,请继续!';
}
?>

好,问题到这里似乎都解决了,但是我们有没有考虑过post提交的数据,大批量的数据呢?
比如一些字符可能会对数据库造成危害,比如'_','%',这些字符都有特殊意义,那么我们如果进行控制呢?还有一点,就是当我们的php.ini里面的magic_quotes_gpc=off的时候,那么提交的不符合数据库规则的数据都是不会自动在前面加''的,那么我们要控制这些问题,于是构建如下函数:


functionstr_check($str)
{
if(!get_magic_quotes_gpc())//判断magic_quotes_gpc是否打开
{
$str=addslashes($str);//进行过滤
}
$str=str_replace("_","_",$str);//把'_'过滤掉
$str=str_replace("%","%",$str);//把'%'过滤掉

return$str;
}

OK,我们又一次的避免了服务器被沦陷的危险。

最后,再考虑提交一些大批量数据的情况,比如发贴,或者写文章、新闻,我们需要一些函数来帮我们过滤和进行转换,再上面函数的基础上,我们构建如下函数:


functionpost_check($post)
{
if(!get_magic_quotes_gpc())//判断magic_quotes_gpc是否为打开
{
$post=addslashes($post);//进行magic_quotes_gpc没有打开的情况对提交数据的过滤
}
$post=str_replace("_","_",$post);//把'_'过滤掉
$post=str_replace("%","%",$post);//把'%'过滤掉
$post=nl2br($post);//回车转换
$post=htmlspecialchars($post);//html标记转换

return$post;
}

呵呵,基本到这里,我们把一些情况都说了一遍,其实我觉得自己讲的东西还很少,至少我才只讲了两方面,再整个安全中是很少的内容了,考虑下一次讲更多,包括php安全配置,apache安全等等,让我们的安全正的是一个整体,作到最安全。

最后在告诉你上面表达的:1.初始化你的变量2.一定记得要过滤你的变量

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章