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生成的html meta和link标记在body标签里 顶部有个空行
May 18 PHP
thinkphp的URL路由规则与配置实例
Nov 26 PHP
PHP的pcntl多进程用法实例
Mar 19 PHP
php使用GD实现颜色渐变实例
Jun 02 PHP
隐性调用php程序的方法
Jun 13 PHP
php计算多维数组中所有值总和的方法
Jun 24 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
Mar 23 PHP
thinkPHP引入类的方法详解
Dec 08 PHP
详细解读php的命名空间(一)
Feb 21 PHP
PHP生成(支持多模板)二维码海报代码
Apr 30 PHP
PHP的mysqli_set_charset()函数讲解
Jan 23 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 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
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
2013/12/26 Javascript
JSONP获取Twitter和Facebook文章数的具体步骤
2014/02/24 Javascript
JavaScript AJAX之惰性载入函数
2014/08/27 Javascript
jQuery实现预加载图片的方法
2015/03/17 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
2017/08/08 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
vue中利用Promise封装jsonp并调取数据
2019/06/18 Javascript
微信小程序网络请求实现过程解析
2019/11/06 Javascript
微信小程序获取当前位置和城市名
2019/11/13 Javascript
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
python回调函数的使用方法
2014/01/23 Python
Python设计模式之MVC模式简单示例
2018/01/10 Python
使用Python对微信好友进行数据分析
2018/06/27 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
opencv 查找连通区域 最大面积实例
2020/06/04 Python
PyQt5的相对布局管理的实现
2020/08/07 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
中国跨境电子商务网站:NewFrog
2018/03/10 全球购物
文员个人求职自荐信
2013/09/21 职场文书
大学同学聚会邀请函
2014/01/29 职场文书
项目采购员岗位职责
2014/04/15 职场文书
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
爱的奉献演讲稿
2014/09/10 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
个人培训总结
2015/03/05 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书