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和ACCESS写聊天室(七)
Oct 09 PHP
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
Nov 18 PHP
php shell超强免杀、减少体积工具实现代码
Oct 16 PHP
PHP得到mssql的存储过程的输出参数功能实现
Nov 23 PHP
php仿QQ验证码的实例分析
Jul 01 PHP
PHP数组函数array_multisort()用法实例分析
Apr 02 PHP
php 三元运算符实例详细介绍
Dec 15 PHP
PHP获取真实客户端的真实IP
Mar 07 PHP
老生常谈PHP面向对象之标识映射
Jun 21 PHP
Laravel下生成验证码的类
Nov 15 PHP
Yii框架中使用PHPExcel的方法分析
Jul 25 PHP
基于laravel belongsTo使用详解
Oct 18 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
php IP及IP段进行访问限制的代码
2008/12/17 PHP
关于php curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
一个简单的网站访问JS计数器 刷新1次加1次访问
2012/09/20 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
jquery判断RadioButtonList和RadioButton中是否有选中项示例
2013/09/29 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
2013/11/07 Javascript
javascript实现全局匹配并替换的方法
2015/04/27 Javascript
jquery实现简单的banner轮播效果【实例】
2016/03/30 Javascript
浅析Jquery操作select
2016/12/13 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
vue.js路由跳转详解
2017/08/28 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
Angular17之Angular自定义指令详解
2018/01/21 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
[50:04]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第二局
2016/02/28 DOTA
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
Python数据类型之Number数字操作实例详解
2019/05/08 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
Python作用域与名字空间原理详解
2020/03/21 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
屈臣氏泰国官网:Watsons TH
2021/02/23 全球购物
秘书专业自荐信范文
2013/12/26 职场文书
优秀毕业生就业推荐信
2014/05/22 职场文书
运动会口号8字
2014/06/07 职场文书
公司口号大全
2014/06/11 职场文书
学校爱国卫生月活动总结
2014/06/25 职场文书
师德师风自查总结
2014/10/14 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书
python中os.path.join()函数实例用法
2021/05/26 Python