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

 更新时间:2015年02月25日 16:18:13   投稿:hebedich  
这篇文章主要简单介绍了PHP中字符安全过滤函数,对于防止sql注入攻击XSS攻击能非常有用,这里推荐给大家。

在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开启opcache提升代码性能

    PHP开启opcache提升代码性能

    APC在PHP5.4及以下版本是性能最好的代码缓存。不过PHP升级到5.5及以上后,APC不再有效。需要使用Zend的OpCache扩展。
    2015-04-04
  • PHP number_format() 函数定义和用法

    PHP number_format() 函数定义和用法

    number_format() 函数通过千位分组来格式化数字
    2012-06-06
  • 谈谈新手如何学习PHP网络编程

    谈谈新手如何学习PHP网络编程

    最近用到了php,虽然php的好的都不懂,也只是做一些简单的修改和书写很少的代码,但感觉php的功能真的很强
    2008-05-05
  • 收集的php编写大型网站问题集

    收集的php编写大型网站问题集

    收集的php编写大型网站问题集...
    2007-03-03
  • PHP实现基于文本的简易搜索引擎功能

    PHP实现基于文本的简易搜索引擎功能

    这篇文章给大家介绍了PHP实现基于文本的简易搜索引擎功能,让这个功能可以在小型网站或者特定数据集内提供快速的关键字搜索能力,非常适合没有使用复杂数据库搜索引擎(如Elasticsearch)的场景,需要的朋友可以参考下
    2024-02-02
  • PHP 信号管理知识整理汇总

    PHP 信号管理知识整理汇总

    这篇文章主要给大家整理汇总了PHP 信号管理知识的相关资料,需要的朋友可以参考下
    2017-02-02
  • php下实现一个阿拉伯数字转中文数字的函数

    php下实现一个阿拉伯数字转中文数字的函数

    最近因需要,写了个“阿拉伯数字转中文数字的函数”。搜索了精华区只见到一个类似的。 感觉到我的算法不错,所以贴出来共享一下
    2008-07-07
  • 彻底杜绝PHP的session cookie错误

    彻底杜绝PHP的session cookie错误

    本文讨论的是如何彻底杜绝warning: Cannot add header information - headers already sent in...... 这种令人莫明其妙的的错误。
    2009-08-08
  • C#静态方法与非静态方法实例分析

    C#静态方法与非静态方法实例分析

    这篇文章主要介绍了C#静态方法与非静态方法,重点讲述了静态方法的实际应用,有助于进一步加深对C#程序设计的理解,需要的朋友可以参考下
    2014-09-09
  • php ftp文件上传函数(基础版)

    php ftp文件上传函数(基础版)

    很多时间我们不会用于php ftp函数文件上传,但有在使用比较高级的WEB应用时就会用到关于ftp功能,如我现在要把上传的图片传B服务器,数据保存到A服务器,普通的php文件上传实现不了,但用ftp功能就可以方便的使用了。
    2010-06-06

最新评论