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与javascript对多项选择的处理
Oct 09 PHP
PHP Session变量不能传送到下一页的解决方法
Nov 27 PHP
php继承的一个应用
Sep 06 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
Jun 20 PHP
手把手教你打印出PDF(关于fpdf的简单应用)
Jun 25 PHP
php获取汉字首字母的函数
Nov 07 PHP
php检查页面是否被百度收录
Oct 28 PHP
简介PHP的Yii框架中缓存的一些高级用法
Mar 29 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
Oct 14 PHP
php获得文件夹下所有文件的递归算法的简单实例
Nov 01 PHP
PHP实现图片的等比缩放和Logo水印功能示例
May 04 PHP
PHP的imageTtfText()函数深入详解
Mar 03 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
DIY实用性框形天线
2021/03/02 无线电
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
简单实用的网站PHP缓存类实例
2014/07/18 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
javascript学习笔记(六) Date 日期类型
2012/06/19 Javascript
js取得html iframe中的元素和变量值
2014/06/30 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
老生常谈jacascript DOM节点获取
2017/04/17 Javascript
ReactNative实现图片上传功能的示例代码
2017/07/11 Javascript
nodejs对express中next函数的一些理解
2017/09/08 NodeJs
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
微信小程序progress组件使用详解
2018/01/31 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
jQuery实现基本淡入淡出效果的方法详解
2018/09/05 jQuery
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
2019/12/17 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
sublime text 3配置使用python操作方法
2017/06/11 Python
python Pygame的具体使用讲解
2017/11/03 Python
python3.5绘制随机漫步图
2018/08/27 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
Python中Numpy mat的使用详解
2019/05/24 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
详解Html5 Canvas画线有毛边解决方法
2018/03/01 HTML / CSS
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
详解HTML5中rel属性的prefetch预加载功能使用
2016/05/06 HTML / CSS
打架检讨书50字
2014/01/11 职场文书
同学聚会主持词
2014/03/18 职场文书
建筑施工安全生产责任书
2014/07/22 职场文书
入党政审材料范文
2014/12/24 职场文书
2016特色励志班级口号
2015/12/24 职场文书
销区经理年终述职报告模板
2019/11/28 职场文书
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL