-
- if(phpversion() set_magic_quotes_runtime(0);
- }
复制代码
>> 无法通过函数来定义magic_quotes_gpc,因此建议在服务器上统一开启,写程序的时候应该在来判断下,避免没开启gpc引起安全问题
通过addslashes对gpc进行时候转义时,应注意当用户提交数组数据时对键值和值的过滤
-
-
if(!get_magic_quotes_gpc()) {
- $_get = daddslashes($_get);
- $_post = daddslashes($_post);
- $_cookie = daddslashes($_cookie);
- $_files = daddslashes($_files);
- }
- function daddslashes($string, $force = 1) {
- if(is_array($string)) {
- foreach($string as $key => $val) {
- unset($string[$key]);
- $string[addslashes($key)] = daddslashes($val, $force);
- }
- } else {
- $string = addslashes($string);
- }
- return $string;
- }
?>>
-
复制代码
利用在用户输入或输出时候转义html实体以防止xss漏洞的产生!
今天碰到一个处理文件特殊字符的事情,再次注意到这个问题,在php中:
-
- $str = "ffff\0ffff";
- echo(strlen($str));
- echo("\n");
- for($i=0;$iecho("\n");
复制代码
输出结果:
----------------------
9
102 102 102 102 0 102 102 102 102
替换特殊字符的例子
-
- $str = "ffff\0ffff";
- $str = str_replace("\x0", "", $str);
- //或者用$str = str_replace("\0", "", $str);
- //或者用$str = str_replace(chr(0), "", $str);
- echo(strlen($str));
- echo("\n");
- for($i=0;$iecho("\n");
-
复制代码
输出结果:
----------------------
8
102 102 102 102 102 102 102 102
八进制ascii码例子:
-
- //注意,符合正则\[0-7]{1,3}的字符串,表示一个八进制的ascii码。
- $str = "\0\01\02\3\7\10\011\08\8"; //这里的\8不符合要求,被修正为"\\8" (ascii为92和56)
- echo(strlen($str));
- echo("\n");
- for($i=0;$iecho("\n");
-
复制代码
输出结果:
----------------------
11
0 1 2 3 7 8 9 0 56 92 56
十六进制ascii码例子:
-
- $str = "\x0\x1\x2\x3\x7\x8\x9\x10\x11\xff";
- echo(strlen($str));
- echo("\n");
- for($i=0;$iecho("\n");
-
复制代码
输出结果:
----------------------
10
0 1 2 3 7 8 9 16 17 255
php特殊字符转义详解
php正则表达式转义字符的例子
PHP常用转义字符函数
PHP转义正则表达式字符的函数
php实现防注入与表单提交值转义的代码
mysql语句中字符转义的方法举例
php字符转义的相关注意事项
|