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注入点构造代码
Jun 14 PHP
解析zend studio中直接导入svn中的项目的方法步骤
Jun 21 PHP
phpmailer发送gmail邮件实例详解
Jun 24 PHP
php中sprintf与printf函数用法区别解析
Feb 17 PHP
常用PHP数组排序函数归纳
Aug 08 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
Sep 22 PHP
详解Yii2 定制表单输入字段的标签和样式
Jan 04 PHP
PHP使用redis消息队列发布微博的方法示例
Jun 22 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
PHP设计模式之装饰器模式定义与用法简单示例
Aug 13 PHP
php实现在线考试系统【附源码】
Sep 18 PHP
php和js实现根据子网掩码和ip计算子网功能示例
Nov 09 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
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
介绍几个array库的新函数 php
2006/12/29 PHP
PHP与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
一个php短网址的生成代码(仿微博短网址)
2014/05/07 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
php判断是否为ajax请求的方法
2016/11/29 PHP
php如何利用pecl安装mongodb扩展详解
2019/01/09 PHP
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
2014/08/30 Javascript
js中利用tagname和id获取元素的方法
2016/01/03 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
2016/06/21 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
jquery实现有过渡效果的tab切换
2020/07/17 jQuery
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
python实现简单爬虫功能的示例
2016/10/24 Python
python如何修改装饰器中参数
2018/03/20 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
python读取xlsx的方法
2018/12/25 Python
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
澳大利亚在线奢侈品时尚零售平台:Azura Runway
2021/01/13 全球购物
商务专员岗位职责
2013/11/23 职场文书
区级文明单位申报材料
2014/05/15 职场文书
小学捐书活动总结
2014/07/05 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
2016年第16个全民国防教育日宣传活动总结
2016/04/05 职场文书
Android开发之底部导航栏的快速实现
2022/04/28 Java/Android
基于redis+lua进行限流的方法
2022/07/23 Redis
app场景下uniapp的扫码记录
2022/07/23 Java/Android