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 相关文章推荐
实现“上一页”和“下一页按钮
Oct 09 PHP
php 变量定义方法
Jun 14 PHP
php win下Socket方式发邮件类
Aug 21 PHP
php设计模式 Mediator (中介者模式)
Jun 26 PHP
php比较多维数组中值的大小排序实现代码
Sep 08 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
Jun 25 PHP
ThinkPHP调试模式与日志记录概述
Aug 22 PHP
CodeIgniter删除和设置Cookie的方法
Apr 07 PHP
PHP7.0安装笔记整理
Aug 28 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
Nov 05 PHP
基于swoole实现多人聊天室
Jun 14 PHP
安装docker和docker-compose实例详解
Jul 30 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
收音机史话 - 1960年代前后的DIY
2021/03/02 无线电
php计算一个文件大小的方法
2015/03/30 PHP
php简单操作mysql数据库的类
2015/04/16 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
PHP 的比较运算与逻辑运算详解
2016/05/12 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
2017/10/26 PHP
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
jquery处理json数据实例分析
2014/06/03 Javascript
ES6下React组件的写法示例代码
2017/05/04 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
React+EggJs实现断点续传的示例代码
2020/07/07 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
如何在面试中手写出javascript节流和防抖函数
2020/10/22 Javascript
Python isinstance判断对象类型
2008/09/06 Python
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
Python解释执行原理分析
2014/08/22 Python
Python实现的批量下载RFC文档
2015/03/10 Python
使用Python的Scrapy框架编写web爬虫的简单示例
2015/04/17 Python
Python输出9*9乘法表的方法
2015/05/25 Python
PYTHON基础-时间日期处理小结
2018/05/05 Python
详解python异步编程之asyncio(百万并发)
2018/07/07 Python
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
Amara美国站:英国高端家居礼品网站,世界各地的奢侈家具品牌
2017/07/26 全球购物
花园仓库建筑:Garden Buildings Direct
2018/02/16 全球购物
大学生饮食配送创业计划书
2014/01/04 职场文书
班级入场式解说词
2014/02/01 职场文书
在校大学生的职业生涯规划书
2014/03/14 职场文书
《搭石》教学反思
2014/04/07 职场文书
解除财产保全担保书
2014/05/20 职场文书
财务部副经理岗位职责范本
2014/06/17 职场文书
一年级数学下册复习计划
2015/01/17 职场文书
2016年禁毒宣传活动总结
2016/04/05 职场文书
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python