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 相关文章推荐
eWebEditor v3.8 商业完整版 (PHP)
Dec 06 PHP
php中变量及部分适用方法
Mar 27 PHP
收藏的PHP常用函数 推荐收藏保存
Feb 21 PHP
PHP CURL模拟GET及POST函数代码
Apr 25 PHP
php 日期和时间的处理-郑阿奇(续)
Jul 04 PHP
PHP实现变色验证码实例
Jan 06 PHP
PHP把小数转成整数3种方法
Jun 30 PHP
简单说说PHP优化那些事(经验分享)
Nov 27 PHP
Zend Framework入门教程之Zend_View组件用法示例
Dec 09 PHP
PHP+Ajax实现的博客文章添加类别功能示例
Mar 29 PHP
laravel 实现设置时区的简单方法
Oct 10 PHP
laravel使用数据库测试注意事项
Apr 10 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采集类snoopy详细介绍(snoopy使用教程)
2014/06/19 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
node.js中的http.response.writeHead方法使用说明
2014/12/14 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
vuejs2.0实现一个简单的分页示例
2017/02/22 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
vue购物车插件编写代码
2017/11/27 Javascript
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
angular4笔记系列之内置指令小结
2018/11/09 Javascript
基于vue-cli3创建libs库的实现方法
2019/12/04 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
[56:47]Ti4 循环赛第三日 iG vs Liquid
2014/07/12 DOTA
python登录豆瓣并发帖的方法
2015/07/08 Python
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
python创建学生管理系统
2019/11/22 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
python实现登录与注册系统
2020/11/30 Python
HTML5等待加载动画效果
2017/07/27 HTML / CSS
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
商务日语毕业生自荐信
2013/11/23 职场文书
学生党员思想汇报
2013/12/28 职场文书
留学推荐信写作指南
2014/01/25 职场文书
汽车装潢店创业计划书范文
2014/02/05 职场文书
元旦晚会策划方案
2014/02/18 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
电工生产实习心得体会
2016/01/22 职场文书
珍惜时间的诗歌赏析
2019/08/23 职场文书
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android
python基础之模块的导入
2021/10/24 Python
详解pytorch创建tensor函数
2022/03/22 Python