PHP 8大安全函数

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注入攻击。

4. htmlspecialchars()

HTML中的一些字符有着特殊的含义,如果要体现这样的含义,就要被转换为HTML实体,这个函数会返回转换后的字符串,比如,‘&’amp会转为‘&’。

5. strip_tags()

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

6. md5()

一些开发者存储的密码非常简单,这从安全的角度上看是不好的,md5()函数可以产生给定字符串的32个字符的md5散列,而且这个过程不可逆,即你不能从md5()的结果得到原始字符串。

7. sha1()

这个函数和上面的md5()相似,但是它使用了不同的算法,产生的是40个字符的SHA-1散列(md5产生的是32个字符的散列)。

8. intval()

不要笑,我知道这不是一个和安全相关的函数,它是在将变量转成整数类型。但是,你可以用这个函数让你的PHP代码更安全,特别是当你在解析id,年龄这样的数据时。

http://developer.51cto.com/art/201411/456258.htm

在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内置的字符串过滤函数,十分简单实用,希望小伙伴们能用好他们。

时间: 2024-11-06 09:29:42

PHP 8大安全函数的相关文章

HW—可怕的阶乘n!__注意大数据函数的使用BigInteger

java.math.BigInteger系列教程(四)BigInteger的诞生原因 为什么java里面要出现BigInteger类型呢?相信很多人有这个疑问,其实原因很简单,它可以表达更大范围的数值,远远比long表示的最大值还要大的多数.在整数类型里面,long可以表达最大值,如下所示: 1 2 3 4 5 6 7 public class Test { public static void main(String[] args) { System.out.println(Long.MAX_

(2)DML增强功能-4大排名函数与top ties

1.row_number()  over( partition by column order by column) (1)测试数据 (2)根据程序使用row_number() over()排序 (3)说明:即使相同分数,也会按排序(这里用到的是默认聚集索引(id字段)排序) (4)至于row_number()  over(partition by column order by column) 加上分区的这种,这里就不演示了,(1-3)中演示的是以所有数据为整体排序,如果用上partition

c的详细学习(6)函数

根据模块化程序设计的原则,一个较大的程序一般要分为若干个小模块,每个模块实现一个比较简单的功能.在c语言中,函数是一个基本的程序模块. (1)函数的基本概念 基本介绍: 任何一个结构化的程序都可以用三种基本结构组成:顺序结构.选择结构和循环结构,为了利用这三种结构编写程序,通常采用自顶向下,逐步细化和模块化的程序设计方法. *函数是按规定格式书写的能完成特定功能的一段程序. *c语言是以源文件为单位进行编译的,一个源文件由一个或多个函数组成. *一个c程序由一个或多个源程序文件组成,可以利用c语

PHP基础系列(一) 字符串相关的函数

PHP提供了非常丰富的自带函数,有人说PHP是一个大的函数库,在某种程度上我是非常认同这种观点的,这个也是PHP非常容易上手的原因之一.在使用PHP编程的时候,需要实现某一功能的时候,如果说php自带这样的函数,建议直接使用php提供的函数,这样往往比自己去实现相同功能的函数效率上要高.比如讲查询php关联数组 $array 中某个 $key 是否存在,就可以直接使用 isset($array[$key]) 的方式. 由于PHP函数众多,这里分多个系列,介绍一下平时编程中经常需要用到的PHP方法

推荐文章:机器学习:“一文读懂机器学习,大数据/自然语言处理/算法全有了

PS:文章主要转载自CSDN大神"黑夜路人"的文章:          http://blog.csdn.NET/heiyeshuwu/article/details/43483655      本文主要对机器学习进行科普,包括机器学习的定义.范围.方法,包括机器学习的研究领域:模式识别.计算机视觉.语音识别.自然语言处理.统计学习和数据挖掘.这是一篇非常好的文章,尤其感学原文作者~          http://www.thebigdata.cn/JieJueFangAn/1308

一文读懂机器学习,大数据/自然语言处理/算法全有了……

原文地址 http://www.open-open.com/lib/view/open1420615208000.html http://www.cnblogs.com/subconscious/p/4107357.html 引论 在本篇文章中,我将对机器学习做个概要的介绍.本文的目的是能让即便全然不了解机器学习的人也能了解机器学习.而且上手相关的实践.这篇文档也算是 EasyPR开发的番外篇.从这里開始.必须对机器学习了解才干进一步介绍EasyPR的内核.当然,本文也面对一般读者.不会对阅读有

C语言中函数参数为什么是由右往左入栈的?

先通过一个小程序来看一看: #include void foo(int x, int y, int z) { printf("x = %d at [%X]n", x, &x); printf("y = %d at [%X]n", y, &y); printf("z = %d at [%X]n", z, &z); } int main(int argc, char *argv[]) { foo(100, 200, 300);

微信小程序开发之大转盘 仿天猫超市抽奖

天猫超市翻牌的转盘经常用,以前做Android,没啥想法,现在尝试微信小程序,看到别人家APP里有啥好玩的,就想去做一个. 上GIF看效果: 简要的说一下. 1.外面一圈闪烁的小球是用js控制的样式.500ms改变一次样式.简单粗暴; 2.抽奖的item也是js控制背景,但是怎么样让它优雅的停下来是个问题.动画中有timingFunction可以设置速度.自己用js就没那么简单了.我这里用setInterval(),时间是线性变化的.换个斜率先小后大的函数效果应该会好一些. 技术相关: 1.微信

Kotlin学习之函数

函数声明 在kotlin中用关键字fun声明函数: fun double(x:Int):Int{ } 其中Int是返回值类型,x指明参数类型是为Int 函数用法 通过传统方法调用函数: val result=double(2) 可以通过. 调用成员函数 Sample().foo() Sample()是Sample类的一个实例 Infix符号 当满足如下条件的时候函数被中缀表示法调用: 函数为成员函数或扩展函数 函数只有一个参数 函数用infix关键字标记 //Int的扩展函数 infix fun