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 相关文章推荐
Oracle 常见问题解答
Oct 09 PHP
检测png图片是否完整的php代码
Sep 06 PHP
PHP访问MYSQL数据库封装类(附函数说明)
Dec 04 PHP
批量获取memcache值并按key的顺序返回的实现代码
Jun 14 PHP
php实现文件编码批量转换
Mar 10 PHP
PHP的变量类型和作用域详解
Mar 12 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
php用户登录之cookie信息安全分析
May 13 PHP
PHP编写登录验证码功能 附调用方法
May 19 PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 PHP
laravel多条件查询方法(and,or嵌套查询)
Oct 09 PHP
laravel利用中间件做防非法登录和权限控制示例
Oct 21 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设计模式之观察者模式的应用详解
2013/05/21 PHP
PHP 安全检测代码片段(分享)
2013/07/05 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
PHP实现的QQ空间g_tk加密算法
2015/07/09 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
JavaScript 实现模态对话框 源代码大全
2009/05/02 Javascript
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
2010/11/11 Javascript
JavaScript 高级篇之闭包、模拟类,继承(五)
2012/04/07 Javascript
JS实现仿苹果底部任务栏菜单效果代码
2015/08/28 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
客户端验证用户名和密码的方法详解
2016/06/16 Javascript
微信小程序入门教程
2016/11/18 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
2019/03/21 Javascript
JS实现导航栏楼层特效
2020/01/01 Javascript
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
python如何在列表、字典中筛选数据
2018/03/19 Python
unittest+coverage单元测试代码覆盖操作实例详解
2018/04/04 Python
django 发送手机验证码的示例代码
2018/04/25 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
html5 touch事件实现页面上下滑动效果【附代码】
2016/03/10 HTML / CSS
趣味比赛活动方案
2014/02/15 职场文书
合作意向协议书范本
2014/03/31 职场文书
2019年最新借条范本!
2019/07/08 职场文书
2019最新婚庆对联集锦!
2019/07/10 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
详解mysql三值逻辑与NULL
2021/05/19 MySQL
Java获取字符串编码格式实现思路
2022/09/23 Java/Android