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 相关文章推荐
基于php 随机数的深入理解
Jun 05 PHP
使用array mutisort 实现按某字段对数据排序
Jun 18 PHP
php实现文件下载(支持中文文名)
Dec 04 PHP
php通过字符串调用函数示例
Mar 02 PHP
php时间戳转换的示例
Mar 31 PHP
php实现微信公众平台账号自定义菜单类
Dec 02 PHP
php使用类继承解决代码重复的问题
Feb 11 PHP
给WordPress的编辑后台添加提示框的代码实例分享
Dec 25 PHP
深入理解PHP JSON数组与对象
Jul 19 PHP
PHP SESSION机制的理解与实例
Mar 22 PHP
PHP之认识(二)关于Traits的用法详解
Apr 11 PHP
laravel邮件发送的实现代码示例
Jan 31 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强制下载PDF文件示例
2014/01/17 PHP
php模拟登陆的实现方法分析
2015/01/09 PHP
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
PHP实现浏览器中直接输出图片的方法示例
2018/03/14 PHP
prototype 学习笔记整理
2009/07/17 Javascript
教你如何使用node.js制作代理服务器
2014/11/26 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
2017/07/05 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
在vue组件中使用axios的方法
2018/03/16 Javascript
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
2019/10/10 jQuery
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
Vue管理系统前端之组件拆分封装详解
2020/08/23 Javascript
Python选择排序、冒泡排序、合并排序代码实例
2015/04/10 Python
wxpython中Textctrl回车事件无效的解决方法
2016/07/21 Python
django中send_mail功能实现详解
2018/02/06 Python
python仿evething的文件搜索器实例代码
2019/05/13 Python
Python3常见函数range()用法详解
2019/12/30 Python
python如何调用字典的key
2020/05/25 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
python中常用的数据结构介绍
2021/01/12 Python
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
Julep官网:美容产品和指甲油
2017/02/25 全球购物
加拿大廉价机票预订网站:CheapOair.ca
2018/03/04 全球购物
美发活动策划书
2014/01/14 职场文书
总经理司机岗位职责
2014/02/06 职场文书
绿化工程实施方案
2014/03/17 职场文书
护士医德考评自我评价
2015/03/03 职场文书
2015年营销工作总结范文
2015/04/23 职场文书
Python循环之while无限迭代
2022/04/30 Python