PHP中常用的转义函数


Posted in PHP onFebruary 28, 2014

1. addslashes

addslashes对SQL语句中的特殊字符进行转义操作,包括(‘), (“), (), (NUL)四个字符,此函数在DBMS没有自己的转义函数时候使用,但是如果DBMS有自己的转义函数,那么推荐使用原装函数,比如MySQL有mysql_real_escape_string函数用来转义SQL。 注意在PHP5.3之前,magic_quotes_gpc是默认开启的,其主要是在$GET, $POST, $COOKIE上执行addslashes操作,所以不需要在这些变量上重复调用addslashes,否则会double escaping的。不过magic_quotes_gpc在PHP5.3就已经被废弃,从PHP5.4开始就已经被移除了,如果使用PHP最新版本可以不用担心这个问题。stripslashes为addslashes的unescape函数。

2. htmlspecialchars

htmlspecialchars把HTML中的几个特殊字符转义成HTML Entity(格式:&xxxx;)形式,包括(&),(‘),(“),(<),(>)五个字符。

& (AND) => &
” (双引号) => " (当ENT_NOQUOTES没有设置的时候)
‘ (单引号) => ' (当ENT_QUOTES设置)
< (小于号) => <
> (大于号) => >  
htmlspecialchars可以用来过滤$GET,$POST,$COOKIE数据,预防XSS。注意htmlspecialchars函数只是把认为有安全隐患的HTML字符进行转义,如果想要把HTML所有可以转义的字符都进行转义的话请使用htmlentities。htmlspecialchars_decode为htmlspecialchars的decode函数。

3. htmlentities

htmlentities把HTML中可以转义的内容转义成HTML Entity。html_entity_decode为htmlentities的decode函数。

4. mysql_real_escape_string

mysql_real_escape_string会调用MySQL的库函数mysql_real_escape_string,对(\x00), (\n), (\r), (), (‘), (\x1a)进行转义,即在前面添加反斜杠(),预防SQL注入。注意你不需要在读取数据库数据的时候调用stripslashes来进行unescape,因为这些反斜杠是在数据库执行SQL的时候添加的,当把数据写入到数据库的时候反斜杠会被移除,所以写入到数据库的内容就是原始数据,并不会在前面多了反斜杠。

5. strip_tags

strip_tags会过滤掉NUL,HTML和PHP的标签。

6. 结语

PHP自带的安全函数并不能完全避免XSS,推荐使用HTML Purifier

PHP 相关文章推荐
第七节 类的静态成员 [7]
Oct 09 PHP
一个基于PDO的数据库操作类
Mar 24 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
Mar 07 PHP
Thinkphp模板中使用自定义函数的方法
Sep 23 PHP
提升PHP性能的21种方法介绍
Jun 25 PHP
PHP数字和字符串ID互转函数(类似优酷ID)
Jun 30 PHP
php中PDO方式实现数据库的增删改查
May 17 PHP
php简单smarty入门程序实例
Jun 11 PHP
配置Nginx+PHP的正确思路与过程
May 10 PHP
PHP 网站修改默认访问文件的nginx配置
May 27 PHP
PHP实现字母数字混合验证码功能
Jul 11 PHP
使用laravel的migrate创建数据表的方法
Sep 30 PHP
PHP中鲜为人知的10个函数
Feb 28 #PHP
php中调用其他系统http接口的方法说明
Feb 28 #PHP
PHP URL参数获取方式的四种例子
Feb 28 #PHP
php使用多个进程同时控制文件读写示例
Feb 28 #PHP
php使用curl抓取qq空间的访客信息示例
Feb 28 #PHP
php命名空间学习详解
Feb 27 #PHP
php读取excel文件示例分享(更新修改excel)
Feb 27 #PHP
You might like
PHP 输出简单动态WAP页面
2009/06/09 PHP
php下把数组保存为文件格式的实例应用
2010/02/08 PHP
PHP学习之正则表达式
2011/04/17 PHP
解析thinkphp基本配置 convention.php
2013/06/18 PHP
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
PHP中基本HTTP认证技巧分析
2015/03/16 PHP
php实现的网页版剪刀石头布游戏示例
2016/11/25 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
js实现目录定位正文示例
2013/11/14 Javascript
JavaScript代码实现禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt
2015/11/17 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
2016/05/24 Javascript
javascript实现的全国省市县无刷新多级关联菜单效果代码
2016/08/01 Javascript
浅谈JS的基础类型与引用类型
2016/09/13 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
python读写文件操作示例程序
2013/12/02 Python
Python list操作用法总结
2015/11/10 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
2018/04/10 Python
python操作文件的参数整理
2019/06/11 Python
pandas分组聚合详解
2020/04/10 Python
Python加速程序运行的方法
2020/07/29 Python
python 基于opencv操作摄像头
2020/12/24 Python
夏威夷航空官网:Hawaiian Airlines
2016/09/11 全球购物
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
电子商务专业实习生自我鉴定
2013/09/24 职场文书
电子信息毕业生自荐信
2013/11/16 职场文书
个性婚礼策划方案
2014/05/17 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
《牧场之国》教学反思
2016/02/22 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
关于保护环境的建议书
2019/06/24 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
浅谈mysql执行过程以及顺序
2021/05/12 MySQL