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安装攻略:常见问题解答(三)
Oct 09 PHP
Php 构造函数construct的前下划线是双的_
Dec 08 PHP
php xml 入门学习资料
Jan 01 PHP
PHP中常用的转义函数
Feb 28 PHP
带你了解PHP7 性能翻倍的关键
Nov 19 PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 PHP
PHP实现批量删除(封装)
Apr 28 PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 PHP
php用xpath解析html的代码实例讲解
Feb 14 PHP
thinkPHP5框架接口写法简单示例
Aug 05 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
Apr 23 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
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
2017/03/08 PHP
php创建类并调用的实例方法
2019/09/25 PHP
JavaScript 高级篇之闭包、模拟类,继承(五)
2012/04/07 Javascript
基于AngularJS+HTML+Groovy实现登录功能
2016/02/17 Javascript
jQuery插件datatables使用教程
2016/04/21 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
AngularJs $parse、$eval和$observe、$watch详解
2016/09/21 Javascript
etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例
2016/11/09 Javascript
jQuery 获取select选中值及清除选中状态
2016/12/13 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
微信小程序动态的加载数据实例代码
2017/04/14 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
Node.js笔记之process模块解读
2018/05/31 Javascript
layui表格数据复选框回显设置方法
2019/09/13 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
2019/09/24 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
2020/04/08 Javascript
[04:16]DOTA2英雄梦之声_第09期_斧王
2014/06/21 DOTA
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
Python基于identicon库创建类似Github上用的头像功能
2017/09/25 Python
对python当中不在本路径的py文件的引用详解
2018/12/15 Python
Python3多线程基础知识点
2019/02/19 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
django model通过字典更新数据实例
2020/04/01 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
会计学习心得体会
2014/09/09 职场文书
人身意外保险授权委托书
2014/10/01 职场文书
小学班主任自我评价
2015/03/11 职场文书
停课通知书
2015/04/24 职场文书
毕业生入职感言
2015/07/31 职场文书
2019如何书写演讲稿?
2019/07/01 职场文书