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安全编程之加密功能
Oct 09 PHP
php中文字符截取防乱码
Mar 28 PHP
PHP 函数执行效率的小比较
Oct 17 PHP
php 面向对象的一个例子
Apr 12 PHP
PHP在字符断点处截断文字的实现代码
Apr 21 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
Jun 17 PHP
php实现字符串首字母转换成大写的方法
Mar 17 PHP
php版微信公众号自定义分享内容实现方法
Sep 22 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
Jun 20 PHP
php实现小程序支付完整版
Oct 09 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
May 06 PHP
Yii框架小部件(Widgets)用法实例详解
May 15 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
第二节--PHP5 的对象模型
2006/11/16 PHP
php中生成随机密码的自定义函数代码
2013/10/21 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
使用jquery读取html5 localstorage的值的方法
2013/01/04 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
2014/05/27 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
2016/05/16 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
JS实现颜色梯度与渐变效果完整实例
2016/12/30 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
微信小程序中添加客服按钮contact-button功能
2018/04/27 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
微信小程序实现折叠与展开文章功能
2018/06/12 Javascript
一次Webpack配置文件的分离实战记录
2018/11/30 Javascript
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
微信小程序获取用户信息并保存登录状态详解
2019/05/10 Javascript
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
[01:46]2020完美世界全国高校联赛秋季赛报名开启
2020/10/15 DOTA
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
在Windows中设置Python环境变量的实例讲解
2018/04/28 Python
python实现linux下抓包并存库功能
2018/07/18 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
浅谈matplotlib默认字体设置探索
2021/02/03 Python
50个强大璀璨的CSS3/JS技术运用实例
2010/02/27 HTML / CSS
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
《音乐之都维也纳》教学反思
2014/04/16 职场文书
化工实习心得体会
2014/09/09 职场文书
2014年物业公司工作总结
2014/11/22 职场文书
蜗居观后感
2015/06/11 职场文书
立春观后感
2015/06/18 职场文书
python获取对象信息的实例详解
2021/07/07 Python
使用Python开发贪吃蛇游戏 SnakeGame
2022/04/30 Python