PHP中字符安全过滤函数使用小结


Posted in PHP onFebruary 25, 2015

在WEB开发过程中,我们经常要获取来自于世界各地的用户输入的数据。但是,我们“永远都不能相信那些用户输入的数据”。所以在各种的Web开发语言中,都会提供保证用户输入数据安全的函数。在PHP中,有些非常有用并且方便的函数,它们可以帮助你防止出现像SQL注入攻击,XSS攻击等问题。

1. mysql_real_escape_string()

这个函数曾经对于在PHP中防止SQL注入攻击提供了很大的帮助,它对特殊的字符,像单引号和双引号,加上了“反斜杠”,确保用户的输入在用它去查询之前已经是安全的了。但你要注意你是在连接着数据库的情况下使用这个函数。
但现在mysql_real_escape_string()这个函数基本不用了,所有新的应用开发都应该使用像PDO这样的库对数据库进行操作,也就是说,我们可以使用现成的语句防止SQL注入攻击。

2. addslashes()

这个函数和上面的mysql_real_escape_string()很相似,同样是为特殊字符加上反斜杠,但要注意当设置文件php.ini中的 magic_quotes_gpc 的值为“on”时,不要使用这个函数。magic_quotes_gpc = on时,对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串 使用 addslashes(),因为这样会导致双层转义。你可以通过PHP中get_magic_quotes_gpc()函数检查这个变量的值。

3. htmlentities()

这个函数对过滤用户输入数据非常有用,它可以把字符转换为 HTML 实体。比如,当用户输入字符“<”时,就会被该函数转化为HTML实体 “<”(查看源代码是将会看到“<”),因此防止了XSS和SQL注入攻击,对于无法被识别的字符集将被忽略,并由 ISO-8859-1 代替

4. htmlspecialchars()

这个函数跟上面的很相似,HTML中的一些字符有着特殊的含义,如果要体现这样的含义,就要被转换为HTML实体,这个函数会返回转换后的字符串。

5. strip_tags()

这个函数可以去除字符串中所有的HTML,JavaScript和PHP标签,当然你也可以通过设置该函数的第二个参数,忽略过滤一些特定的标签。

6. intval()

intval其实不属于过滤的函数,它的作用是将变量转成整数类型。在我们需要得到一个整数的参数时非常有用,你可以用这个函数让你的PHP代码更安全,特别是当你在解析id,年龄这样的整数形数据时。

PHP关于表单提交特殊字符的处理方法做个汇总,主要涉及htmlspecialchars/addslashes/stripslashes/strip_tags/mysql_real_escape_string等几个函数联合使用,与大家共同交流。
一、几个与特殊字符处理有关的PHP函数

函数名 释义 介绍
htmlspecialchars 将与、单双引号、大于和小于号化成HTML格式 &转成& "转成" ' 转成' 转成>
htmlentities() 所有字符都转成HTML格式 除上面htmlspecialchars字符外,还包括双字节字符显示成编码等。
addslashes 单双引号、反斜线及NULL加上反斜线转义 被改的字符包括单引号(')、双引号(")、反斜线backslash (\) 以及空字符NULL。
stripslashes 去掉反斜线字符 去掉字符串中的反斜线字符。若是连续二个反斜线,则去掉一个,留下一个。若只有一个反斜线,就直接去掉。
quotemeta 加入引用符号 将字符串中含有. \\ + * ? [ ^ ] ( $ ) 等字符的前面加入反斜线"\" 符号。
nl2br() 将换行字符转成
strip_tags 去掉HTML及PHP标记 去掉字符串中任何HTML标记和PHP标记,包括标记封堵之间的内容。注意如果字符串HTML及PHP标签存在错误,也会返回错误。
mysql_real_escape_string 转义SQL字符串中的特殊字符 转义\x00 \n \r 空格 \ ' " \x1a,针对多字节字符处理很有效。mysql_real_escape_string会判断字符集,mysql_escape_string则不用考虑。

这些都是PHP内置的字符串过滤函数,十分简单实用,希望小伙伴们能用好他们。

PHP 相关文章推荐
图象函数中的中文显示
Oct 09 PHP
PHP Header用于页面跳转要注意的几个问题总结
Oct 03 PHP
php自动获取字符串编码函数mb_detect_encoding
May 31 PHP
关于Sphinx创建全文检索的索引介绍
Jun 25 PHP
PHP将回调函数作用到给定数组单元的方法
Aug 19 PHP
php内存缓存实现方法
Jan 24 PHP
使用php的HTTP请求的库Requests实现美女图片墙
Feb 22 PHP
Codeigniter校验ip地址的方法
Mar 21 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
May 23 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
PHP的静态方法与普通方法用法实例分析
Sep 26 PHP
laravel框架之数据库查出来的对象实现转化为数组
Oct 23 PHP
PHP 魔术变量和魔术函数详解
Feb 25 #PHP
PDO防注入原理分析以及注意事项
Feb 25 #PHP
php短址转换实现方法
Feb 25 #PHP
php中mysql连接方式PDO使用详解
Feb 25 #PHP
php中数据库连接方式pdo和mysqli对比分析
Feb 25 #PHP
Mac OS下配置PHP+MySql环境
Feb 25 #PHP
php禁止某ip或ip地址段访问的方法
Feb 25 #PHP
You might like
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
几个有用的php字符串过滤,转换函数代码
2012/05/01 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
PHP字符串中抽取子串操作实例分析
2019/06/22 PHP
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
一个收集图片的bookmarlet(js 刷新页面中的图片)
2010/05/27 Javascript
JavaScript字符串String和Array操作的有趣方法
2012/12/18 Javascript
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
BootStrap Fileinput的使用教程
2016/12/30 Javascript
JS中的作用域链
2017/03/01 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
2018/07/24 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
JavaScript DOM常用操作代码汇总
2020/07/03 Javascript
[01:22:29]真视界:2019年国际邀请赛总决赛
2020/01/29 DOTA
python使用正则搜索字符串或文件中的浮点数代码实例
2014/07/11 Python
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
Python全排列操作实例分析
2018/07/24 Python
Python 支付整合开发包的实现
2019/01/23 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
详解PyCharm+QTDesigner+PyUIC使用教程
2019/06/13 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
Jmeter HTTPS接口测试证书导入过程图解
2020/07/22 Python
CSS3的RGBA中关于整数和百分比值的转换
2015/08/04 HTML / CSS
英国首屈一指的票务公司:See Tickets
2019/05/11 全球购物
Sisley法国希思黎中国官网:享誉全球的奢华植物美容品牌
2019/06/30 全球购物
美国翻新电子产品商店:The Store
2019/10/08 全球购物
中职应届生会计求职信
2013/10/23 职场文书
2014年班主任自我评价范文
2014/04/23 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
汽修专业自荐信
2014/07/07 职场文书
利用python调用摄像头的实例分析
2021/06/07 Python