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文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
Jun 13 PHP
php缓存技术详细总结
Aug 07 PHP
php判断字符串在另一个字符串位置的方法
Feb 27 PHP
10条php编程小技巧
Jul 07 PHP
PHP使用反射机制实现查找类和方法的所在位置
Apr 22 PHP
PHP环境搭建的详细步骤
Jun 30 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
Feb 04 PHP
PHP中Laravel 关联查询返回错误id的解决方法
Apr 01 PHP
PHP JWT初识及其简单示例
Oct 10 PHP
PHP单例模式实例分析【防继承,防克隆操作】
May 22 PHP
smarty模板的使用方法实例分析
Sep 18 PHP
php中文语义分析实现方法示例
Sep 28 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按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
php简单实现数组分页的方法
2016/04/30 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
2019/04/23 PHP
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
jquery自动完成插件(autocomplete)应用之PHP版
2009/12/15 Javascript
Javascript Request获取请求参数如何实现
2012/11/28 Javascript
Javascript Throttle &amp; Debounce应用介绍
2013/03/19 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
vue项目中全局引入1个.scss文件的问题解决
2019/08/01 Javascript
Centos7 安装Node.js10以上版本的方法步骤
2019/10/15 Javascript
JS实现旋转木马轮播图
2020/01/01 Javascript
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
Python实现包含min函数的栈
2016/04/29 Python
使用Python3制作TCP端口扫描器
2017/04/17 Python
Python pyinotify模块实现对文档的实时监控功能方法
2018/10/13 Python
python f-string式格式化听语音流程讲解
2019/06/18 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
django跳转页面传参的实现
2020/09/17 Python
python利用paramiko实现交换机巡检的示例
2020/09/22 Python
房地产营销策划方案
2014/02/08 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
销售员自我评价
2015/03/11 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
教师节班会主持词
2015/07/06 职场文书
2015年计算机教师工作总结
2015/07/22 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书