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 相关文章推荐
VFP与其他应用程序的集成
Oct 09 PHP
详解php的魔术方法__get()和__set()使用介绍
Sep 19 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
Jun 28 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
laravel中的错误与日志用法详解
Jul 26 PHP
PHP+JQuery+Ajax实现分页方法详解
Aug 06 PHP
PHP实现对二维数组某个键排序的方法
Sep 14 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
Oct 13 PHP
利用php_imagick实现复古效果的方法
Oct 18 PHP
php封装的验证码工具类完整实例
Oct 19 PHP
对laravel in 查询的使用方法详解
Oct 09 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
Oct 14 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的mysqli_stat()函数讲解
2019/01/23 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
js每次Title显示不同的名言
2008/09/25 Javascript
基于jquery实现的表格分页实现代码
2011/06/21 Javascript
js不能跳转到上一页面的问题解决方法
2013/03/01 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
总结JavaScript中布尔操作符||与&amp;&amp;的使用技巧
2015/11/17 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
jQuery实现倒计时功能完整示例
2020/06/01 jQuery
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
Anaconda入门使用总结
2018/04/05 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
Python换行与不换行的输出实例
2020/02/19 Python
Python如何将函数值赋给变量
2020/04/28 Python
python能自学吗
2020/06/18 Python
python db类用法说明
2020/07/07 Python
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
学前教育毕业生自荐信
2013/10/29 职场文书
大学生村官事迹材料
2014/01/21 职场文书
小学教师办公室制度
2014/02/03 职场文书
《老王》教学反思
2014/02/23 职场文书
2015年元旦活动总结
2014/05/09 职场文书
2015年党风廉政承诺书
2015/01/22 职场文书
意向协议书
2015/01/27 职场文书
公司前台接待岗位职责
2015/04/03 职场文书
人代会简报
2015/07/21 职场文书
2019学生会干事辞职信
2019/06/27 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript