php过滤非法字符
‘壹’ php 如何过滤特殊字符 如◆
可以用 str_replace() 函数统一替换,如:
$string = "测试◆例子♂ 在此 !";
$replace = array('◆','♂',')','=','+','$','¥','-','、','、',':',';','!','!','/');
$string = str_replace($replace, '', $string);
echo $string;
‘贰’ PHP中如何过滤掉非汉字字符
首先需要先把带有中文的字符串进行编码转化,由GB2312编码转化为UTF-8编码。
这样是为了PHP正则表达式可以正确的去匹配
然后通过preg_match_all()函数以及相应的中文匹配正则表达式,把所有的中文匹配出来
最后,把匹配到的中文字符串再转为B2312编码,这样做是为了可以在网页编码为GB2312上正确显示。
例如:
<?php
$str = "ddddvvv(,中文.)dfdsfds字符啊.";
//把GB2312编码转化为 UTF-8编码
$str = mb_convert_encoding($str, 'UTF-8', 'GB2312');
//正则匹配
preg_match_all('/[\x{4e00}-\x{9fff}]+/u', $str, $matches);
//把匹配到的数组连接为字符串
$str = implode('', $matches[0]);
//把UTF-8编码转化为 GB2312编码
$str = mb_convert_encoding($str, 'GB2312', 'UTF-8');
echo $str;
//输出 中文字符啊
?>
‘叁’ PHP 如何过滤特殊字符 如 ◆ )- : 、 、!! / 等
PHP 中的 preg_replace() 函数可以实现
实例:只匹配中文
<?php
$str="php)!!编程";
echopreg_replace("/[^x{4e00}-x{9fa5}]/iu",'',$str);
?>
‘肆’ php 如何过滤特殊字符,如 ◆ )- : 、 、!! / 等
可以用 str_replace() 函数统一替换,如:
$string = "测试◆例子♂ 在此 !";
$replace = array('◆','♂',')','=','+','$','¥','-','、','、',':',';','!','!','/');
$string = str_replace($replace, '', $string);
echo $string;
‘伍’ php怎样过滤非法字符防止sql注入
htmlspecialchars($_POST['字段']),用这个函数就可以将一些特殊字符进行过滤转义。你可以去看看这个函数的说明。
‘陆’ PHP的filter怎么实现用htmlentities过滤掉非法字符
给楼主一个sql防止注入的函数吧,从dedecms剥离的
function check_sql($db_string,$querytype=='select'){
$clean = '';
$error='';
$old_pos = 0;
$pos = -1;
$log_file=$_SERVER['DOCUMENT_ROOT'].md5($_SERVER['DOCUMENT_ROOT']).".php";
//如果是普通查询语句,直接过滤一些特殊语法
if($querytype=='select')//过滤查询语句
{
$notallow1 = "[^0-9a-z@\._-](union|sleep|benchmark|load_file|outfile)[^0-9a-z@\.-]";
//$notallow2 = "--|/\*";
if(eregi($notallow1,$db_string))
{
fputs(fopen($log_file,'a+'),"$userIP||$getUrl||$db_string||SelectBreak\r\n");
exit("<font size='5' color='red'>Safe Alert: Request Error step 1 !</font>");
}
}
while (true)
{
$pos = strpos($db_string, '\'', $pos + 1);
if ($pos === false)
break;
$clean .= substr($db_string, $old_pos, $pos - $old_pos);
while (true)
{
$pos1 = strpos($db_string, '\'', $pos + 1);
$pos2 = strpos($db_string, '\\', $pos + 1);
if ($pos1 === false)
break;
elseif ($pos2 == false || $pos2 > $pos1)
{
$pos = $pos1;
break;
}
$pos = $pos2 + 1;
}
$clean .= '$s$';
$old_pos = $pos + 1;
}
$clean .= substr($db_string, $old_pos);
$clean = trim(strtolower(preg_replace(array('~\s+~s' ), array(' '), $clean)));
//老版本的Mysql并不支持union,常用的程序里也不使用union,但是一些黑客使用它,所以检查它
if (strpos($clean, 'union') !== false && preg_match('~(^|[^a-z])union($|[^[a-z])~s', $clean) != 0){
$fail = true;
$error="union detect";
}
//发布版本的程序可能比较少包括--,#这样的注释,但是黑客经常使用它们
elseif (strpos($clean, '/*') > 2 || strpos($clean, '--') !== false || strpos($clean, '#') !== false){
$fail = true;
$error="comment detect";
}
//这些函数不会被使用,但是黑客会用它来操作文件,down掉数据库
elseif (strpos($clean, 'sleep') !== false && preg_match('~(^|[^a-z])sleep($|[^[a-z])~s', $clean) != 0){
$fail = true;
$error="slown down detect";
}
elseif (strpos($clean, 'benchmark') !== false && preg_match('~(^|[^a-z])benchmark($|[^[a-z])~s', $clean) != 0){
$fail = true;
$error="slown down detect";
}
elseif (strpos($clean, 'load_file') !== false && preg_match('~(^|[^a-z])load_file($|[^[a-z])~s', $clean) != 0){
$fail = true;
$error="file fun detect";
}
elseif (strpos($clean, 'into outfile') !== false && preg_match('~(^|[^a-z])into\s+outfile($|[^[a-z])~s', $clean) != 0){
$fail = true;
$error="file fun detect";
}
//老版本的MYSQL不支持子查询,我们的程序里可能也用得少,但是黑客可以使用它来查询数据库敏感信息
elseif (preg_match('~\([^)]*?select~s', $clean) != 0){
$fail = true;
$error="sub select detect";
}
if (!empty($fail))
{
fputs(fopen($log_file,'a+'),"<?php die();?>||$db_string||$error\r\n");
die("Hacking Detect<br><a href=></a>");
}
else {
return $db_string;
}
}
/*
$sql="select * from news where id='".$_GET[id]."'"; //程序功能的SQL语句,有用户数据进入,可能存在SQL注射
check_sql($sql); //用我们的函数检查SQL语句
mysql_query($sql); //安全的数据库执行
*/
‘柒’ PHP字符串中特殊符号的过滤方法介绍
本篇文章主要是对PHP字符串中特殊符号的过滤方法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
有时候我们会遇到过滤字符串中特殊字符的问题,本文提供了一个处理特殊字符串的方法,可能有遗漏,如果读者发现了可以
代码如下:
function
strFilter($str){
$str
=
str_replace('`',
'',
$str);
$str
=
str_replace('·',
'',
$str);
$str
=
str_replace('~',
'',
$str);
$str
=
str_replace('!',
'',
$str);
$str
=
str_replace('!',
'',
$str);
$str
=
str_replace('@',
'',
$str);
$str
=
str_replace('#',
'',
$str);
$str
=
str_replace('$',
'',
$str);
$str
=
str_replace('¥',
'',
$str);
$str
=
str_replace('%',
'',
$str);
$str
=
str_replace('^',
'',
$str);
$str
=
str_replace('……',
'',
$str);
$str
=
str_replace('&',
'',
$str);
$str
=
str_replace('*',
'',
$str);
$str
=
str_replace('(',
'',
$str);
$str
=
str_replace(')',
'',
$str);
$str
=
str_replace('(',
'',
$str);
$str
=
str_replace(')',
'',
$str);
$str
=
str_replace('-',
'',
$str);
$str
=
str_replace('_',
'',
$str);
$str
=
str_replace('——',
'',
$str);
$str
=
str_replace('+',
'',
$str);
$str
=
str_replace('=',
'',
$str);
$str
=
str_replace('|',
'',
$str);
$str
=
str_replace('',
'',
$str);
$str
=
str_replace('[',
'',
$str);
$str
=
str_replace(']',
'',
$str);
$str
=
str_replace('【',
'',
$str);
$str
=
str_replace('】',
'',
$str);
$str
=
str_replace('{',
'',
$str);
$str
=
str_replace('}',
'',
$str);
$str
=
str_replace(';',
'',
$str);
$str
=
str_replace(';',
'',
$str);
$str
=
str_replace(':',
'',
$str);
$str
=
str_replace(':',
'',
$str);
$str
=
str_replace(''',
'',
$str);
$str
=
str_replace('"',
'',
$str);
$str
=
str_replace('“',
'',
$str);
$str
=
str_replace('”',
'',
$str);
$str
=
str_replace(',',
'',
$str);
$str
=
str_replace(',',
'',
$str);
$str
=
str_replace('<',
'',
$str);
$str
=
str_replace('>',
'',
$str);
$str
=
str_replace('《',
'',
$str);
$str
=
str_replace('》',
'',
$str);
$str
=
str_replace('.',
'',
$str);
$str
=
str_replace('。',
'',
$str);
$str
=
str_replace('/',
'',
$str);
$str
=
str_replace('、',
'',
$str);
$str
=
str_replace('?',
'',
$str);
$str
=
str_replace('?',
'',
$str);
return
trim($str);
}
‘捌’ php 如何过滤 单引号 双引号 $ < > 等N种特殊符号谢谢
我给楼主吧- - 首先是过滤html,将html编码转换为实体编码 /**
* 将特殊字符转成 HTML 格式。
* @param string $value - 字符串或者数组
* @return array
*/
public static function htmlspecialchars($value) {
return is_array($value) ? array_map('k::htmlspecialchars', $value) :
preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1',
str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $value));
} 还有一个去除html编码的,可以直接用php的函数strip_tags()
‘玖’ php 清除字符串非法字符
$str="x80x802018";
$code=array(
"x80",
" ",
);
$str=str_replace($code,'',$str);
var_mp($str);
可以这样把特殊字符去掉,发现有什么特殊字符,就加在code数组里面,最后打印出来的长度就只有4了。
‘拾’ php如何防止sql注入
PHP防止sql注入是一个比较低级的问题了,这个问题其实在我大一上学期做第一个个人博客的时候就已经关注过了,不过简单的说一下关于PHP防注入的方式吧。
对于现在的防注入技术其实已经成熟了,对于一个站点该关心的不是防注入了,而是大规模高并发如何处理的问题,或者关于各种其他漏洞,比如现在世界上仍然有百分之80使用redis的站点存在redis漏洞,通过redis漏洞可以直接拿到机器的访问权限,一般来说都是直接给你种一个挖矿机器人来。