字符转义

与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进行时候转义时,应注意当用户提交数组数据时对键值和值的过滤 :

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漏洞的产生!
原文地址:https://www.cnblogs.com/zhanghaoyong/p/2647674.html