与PHP字符串转义相关的配置和函数如下:
1.magic_quotes_runtime PHP5.3.0以上为关闭,set、get废除
2.magic_quotes_gpc magic_quotes_gpc设置是否自动为GPC(GET,POST,COOKIE)传来的数据中的某些字符进行转义
3.addslashes()和stripslashes() addslashes() 在指定的预定义字符前添加反斜杠。 预定义字符包括单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。
stripslashes()函数的功能与addslashes()正好相反,它的功能是去除转义的效果。
4.mysql_escape_string() 转义 SQL语句中使用的字符串中的特殊字符。 这里的特殊包括(\x00)、( \n)、( \r )、(\)、( ')、 (")、( \x1a)
5.addcslashes()和stripcslashes()
6.htmlentities() 和html_entity_decode() htmlentities() 把字符转换为 HTML 实体。html_entity_decode() -把 HTML 实体转换为字符。
7.htmlspecialchars()和htmlspecialchars_decode() htmlspecialchars()函数把一些预定义的字符转换为 HTML 实体。 反函数是htmlspecialchars_decode()
注意:一、无法通过函数来定义magic_quotes_gpc,因此建议在服务器上统一开启,写程序的时候应该在来判断下,避免没开启GPC引起安全问题。
通过addslashes对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;
}