简单PHP防注入内容过滤方法
内容过滤多是为了防止一些安全注入或者是跨域操作了,下面我们一起来看看我整理的几个简单的防注入内容过滤程序代码,希望文章对各位同学会有所帮助。
方法一,过滤一些没用的内容
过滤没用的信息比较严格,有用的可能也输入不进去,可以从网上找找其他的过滤方法:
代码如下 |
复制代码 |
function checkHtml($data){
$ret = preg_match("/['.,:;*?~`!@#$%^&+=)(<>{}]|]|[|/|\|"||/",$data);
if ($ret == 1) {
return false; exit;
} else {
return true;
}
}
|
例2 过滤一些html标签了
代码如下 |
复制代码 |
function uh($str)
{
$farr = array(
"/s+/", //过滤多余的空白
"/<(/?)(scripti?framestylehtmlbodytitlelinkmeta?%)([^>]*?)>/isU", //过滤 <script 等可能引入恶意内容或恶意改变显示布局的代码,如果不需要插入flash等,还可以加入<object的过滤
"/(<[^>]*)on[a-zA-Z]+s*=([^>]*>)/isU", //过滤javascript的on事件
);
$tarr = array(
" ",
"<\1\2\3>", //如果要直接清除不安全的标签,这里可以留空
"\1\2",
);
$str = preg_replace( $farr,$tarr,$str);
return $str;
}
|
方法三,上面两种方法都是把要过滤内容放在了程序中,下面我把要过滤的内容放到一个txt文本只,第次只要读文件内容进行判断即可,这样方便维护要过滤的内容。
代码如下 |
复制代码 |
<?php
if($_POST)
{
//获取文件内容转为数组两种方法:
/*
$fcon = file_get_contents("./filter.txt");
$filter_word = explode("n",$fcon);
*/
$filter_word = file("./filter.txt");
//$filter_word = array("test1","test2","test3","test4");
$str = $_POST["mess"];
for($i=0;$i<count($filter_word);$i++)
{
if(preg_match("/".(trim($filter_word[$i]))."/i",$str))
{
echo "<script>alert('您输入的内容含非法内容,请重输!');</script>";
echo "<a href='index.php'>返回</a>";
exit;
}
}
echo "您输入的内容是:".$str;
}
?>
<h2>测试过滤是否生效:</h2>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<p><textarea name="mess" cols="40" rows="4"></textarea></p>
<p><input type="submit" name="sub" value="send"></p>
</form>
|
/php/32445.htmlwww.phpzy.comtrue/php/32445.htmlTechArticle简单PHP防注入内容过滤方法 内容过滤多是为了防止一些安全注入或者是跨域操作了,下面我们一起来看看我整理的几个简单的防注入内容过滤程序代码,希望文章对各位同学会有所帮助...
PHP之友评论