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 相关文章推荐
pw的一个放后门的方法分析
Oct 08 PHP
php获取mysql数据库中的所有表名的代码
Apr 23 PHP
PHP setcookie设置Cookie用法(及设置无效的问题)
Jul 13 PHP
PHP的可变变量名的使用方法分享
Feb 05 PHP
php IP转换整形(ip2long)的详解
Jun 06 PHP
PHP解析RSS的方法
Mar 05 PHP
php发送邮件的问题详解
Jun 22 PHP
PHP抓取及分析网页的方法详解
Apr 26 PHP
Yii视图CGridView列表用法实例分析
Jul 12 PHP
php实现的网页版剪刀石头布游戏示例
Nov 25 PHP
Yii 2.0中场景的使用教程
Jun 02 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
Apr 02 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
关于session在PHP5的配置文件中的详细设置参数说明
2011/04/20 PHP
PHP排序之二维数组的按照字母排序实现代码
2011/08/13 PHP
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
JavaScript基础知识学习笔记
2014/12/02 Javascript
简单分析javascript面向对象与原型
2015/05/21 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
javascript合并表格单元格实例代码
2016/01/03 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随)
2016/10/27 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
vue 组件中slot插口的具体用法
2018/04/03 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
详解vue-cli3多环境打包配置
2019/03/28 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
2020/08/31 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
2020/12/04 Vue.js
Python采用raw_input读取输入值的方法
2014/08/18 Python
简单介绍Python中利用生成器实现的并发编程
2015/05/04 Python
Python多项式回归的实现方法
2019/03/11 Python
python 采用paramiko 远程执行命令及报错解决
2019/10/21 Python
pycharm设置当前工作目录的操作(working directory)
2020/02/14 Python
基于nexus3配置Python仓库过程详解
2020/06/15 Python
PyCharm+Miniconda3安装配置教程详解
2021/02/16 Python
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
大学生个人简历自我评价
2013/11/16 职场文书
入党积极分子介绍信
2014/01/17 职场文书
高中生班主任评语
2014/04/25 职场文书
迎新晚会策划方案
2014/06/13 职场文书
班级体育活动总结
2014/07/05 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
超级礼物观后感
2015/06/15 职场文书