当前位置:编程学习 > php >>

PHP怎么过滤非法函数?

我写个留言板,如果别人留言的时候,在留言框输入<script>........之类的

那后果就不堪设想了...

请问有什么办法过滤这些...

这个行不? http://xwuxin.javaeye.com/blog/460919 (如果行,又怎么用)

追问:请问除了<script>还有没有其他函数是怕别人写进去的?

答案:靠,楼上的用的了那么繁琐吗?php内值函数htmlspecialchars搞定

<?php
 $a = "<b>asf</b><script>alert('asdf')</script>哈哈";
echo htmlspecialchars($a);
 ?>

自己copy代码看效果.

/**
 * 危险 HTML代码过滤器
 *
 * @param   string  $html   需要过滤的html代码
 *
 * @return  string
 */
function html_filter($html)
{
 $filter = array(
 "/\s/",
 "/<(\/?)(script|i?frame|style|html|body|title|link|object|meta|\?|\%)([^>]*?)>/isU",
 "/(<[^>]*)on[a-zA-Z]\s*=([^>]*>)/isU",
 );

 $replace = array(
 " ",
 "&lt;\\1\\2\\3&gt;",
 "\\1\\2",
 );

 $str = preg_replace($filter,$replace,$html);
 return $str;
}

function htmldecode($str)
{
if(empty($str)) return;
if($str=="") return $str;
$str=str_replace("&",chr(34),$str);
$str=str_replace(">",">",$str);
$str=str_replace("<","<",$str);
$str=str_replace("&","&",$str);
$str=str_replace(" ",chr(32),$str);
$str=str_replace(" ",chr(9),$str);
$str=str_replace("'",chr(39),$str);
$str=str_replace("<br />",chr(13),$str);
$str=str_replace("''","'",$str);
$str=str_replace("select","select",$str);
$str=str_replace("join","join",$str);
$str=str_replace("union","union",$str);
$str=str_replace("where","where",$str);
$str=str_replace("insert","insert",$str);
$str=str_replace("delete","delete",$str);
$str=str_replace("update","update",$str);
$str=str_replace("like","like",$str);
$str=str_replace("drop","drop",$str);
$str=str_replace("create","create",$str);
$str=str_replace("modify","modify",$str);
$str=str_replace("rename","rename",$str);
$str=str_replace("alter","alter",$str);
$str=str_replace("cas","cast",$str);
$farr = array(
"/\s+/" , //过滤多余的空白
"/<(\/?)(img|script|i?frame|style|html|body|title|link|meta|\?|\%)([^>]*?)>/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;
}

上一个:php里字节数组怎么理解
下一个:ASP 转译 PHP 的问题

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,