加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.dakongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP函数详解,审计必看

发布时间:2022-10-26 15:06:31 所属栏目:PHP教程 来源:
导读:  这篇文章主要介绍部分审计中常见的一些函数及其不同参数配置的功能,开发者和审计人员都可以作为一个参考内容。

  1.addslashes():用于对字符串中的单引号双引号以及反斜线增加反斜线进行转义,多用于入库
  这篇文章主要介绍部分审计中常见的一些函数及其不同参数配置的功能,开发者和审计人员都可以作为一个参考内容。
 
  1.addslashes():用于对字符串中的单引号双引号以及反斜线增加反斜线进行转义,多用于入库数据进行转义,在取消了magic_quotes_gpc配置后这个函数主要用来过滤外部传入的参数,$_GET、$_POST、$_COOKIE。但是数据入库以后反斜线并不会插入,所以这个函数提供的转义仅仅能保证SQL语句的查询转义。
 
  2.htmlspecialchars():将html代码转换为实体代码,此函数多用于防范html注入产生的攻击,同时该函数还有三个配置项
 
  ENT_COMPAT 默认,仅编码双引号
 
  ENT_QUOTES编码双引号和单引号
 
  ENT_NOQUOTES不编码任何引号
 
  所以当配置项为ENT_NOQUOTES时对于转义引号是没有任何作用的,当为ENT_COMPAT时对于单引号是不过滤的。
 
  3.strpos():该函数用于查找匹配字符串第一次出现的位置,但该函数是区分大小写的,所以对于一些黑白名单的匹配过滤上是存在安全风险的,在这个函数中php和Php是不一样的,jpg和JPG也是不一样的,所以从大小写上就可以绕过这个函数对字符的查找。
 
  4.parse_str():用来将字符串解析为变量,如字符串a=c&b=aaa将其直接放入不加任何参数的情况下,就会在程序中增加变量$a和$b,在字符串外部可控的情况下极易造成变量覆盖漏洞,该函数还有第二个参数,用来存储解析的变量,该变量的类型为数组,如果设置这一个参数那么所有的变量均会以数组键值的方式存储在这个变量中不会影响其他的变量。
 
  5.extract():用来将数组成员解析为全局变量如array('a'=>'hacker')在传入到该函数中就会生成$a变量值为hacker,与parse_str有所不同的是一个是生成数组一个是解析数组。同样的该函数也有第二个参数:
 
  EXTR_OVERWRITE 如果有冲突,覆盖已有的变量
 
  EXTR_SKIP 如果有冲突PHP函数,不覆盖已有的变量
 
  EXTR_PREFIX_SAME 如果有冲突,在变量名前加上前缀 prefix
 
  EXTR_PREFIX_ALL
 
  EXTR_PREFIX_INVALID
 
  EXTR_IF_EXISTS
 
  EXTR_PREFIX_IF_EXISTS
 
  EXTR_REFS
 
  这里我只给常用的配置项几个加了说明,所以通常的安全配置是采用的EXTR_SKIP参数,如不设置默认为按照覆盖变量。
 
  代码审计是一项非常耗时间的活,不同于通常的安全测试,他不光要了解漏洞原理还要了解各个函数的功能,以上仅仅是众多技巧的冰山一角,而开发者要开发一套bug少效果好的程序更需要深入研究各个函数的特点和语法问题,总之在这上面无数人为之学秃了顶熬白了头。
 
  如有问题和意见欢迎与我联系进行指正。
 

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!