公告:九九网站目录为广大站长提供免费收录网站服务,会员可在线完成投稿无需添加友情链接。只收录内容正规合法的网站;快审网站软文10元

点击这里在线咨询客服
新站提交
  • 网站:8453
  • 待审:20
  • 小程序:9
  • 文章:3601
  • 会员:2183

 

〝 古人学问遗无力,少壮功夫老始成 〞:因为PHP是弱类型语言,所以内置的很多函数,在进行转换和比较的时候,会有各种漏洞需要格外关注。不然很容易在安全上造成各种各样的漏洞,当然平时可能问题不会显现,但是如果人家恶意攻击,这将首当其冲,必然安全部门首先让你来背锅,所以代码能严格就要严格,尽量在平时养成良好的习惯

 

01

md5加密漏洞

比较哈希字符串的时候,php程序把每一个以0x开头的哈希值都解释为科学计数法0的多少次方,恒为0。

所以如果两个不同的密码经过哈希以后,其哈希值都是以0e开头的,那么php将会认为他们相同。

另外md5加密是有几率两个字符串不同,但是加密后的值是相同的情况,这种情况称为哈希碰撞。

$str1 =s878926199a;
$str2 =s214587387a;echojson_encode([md5_str1=> md5($str1),md5_str2=> md5($str2),bool=> md5($str1) == md5($str2)
]);

结果两个值加密后竟然相等。

缺点你懂的,如果一个网站的某个用户密码加密后刚好是0e开头的,这个时候黑客过来破解,很容易就攻入了。

{md5_str1:"0e545993274517709034328855841020",md5_str2:"0e848240448830537924465865611904",bool: true
}

02

is_numeric漏洞

会忽视0x这种十六进制的数

容易引发sql注入操作,暴露敏感信息

echojson_encode([
 is_numeric(233333),
 is_numeric(233333),
 is_numeric(0x233333),
 is_numeric(0x233333),
 is_numeric(233333abc),
]);

结果如下:

16进制数0x61646D696EASII码对应的值是admin。

如果我们执行了后面这条命令的话:SELECT * FROM tp_user where username=0x61646D696E,结果不言而喻

[true,true,true,false,false]

03

in_array漏洞

in_array中是先将类型转为整形,再进行判断。

PHP作为弱类型语言,类型转换的时候,会有很大漏洞。

转换的时候,如果将字符串转换为整形,从字符串非整形的地方截止转换,如果无法转换,将会返回0。

phpvar_dump(in_array("2%20and%20%", [0,2,3]));

结果如下:

bool(true)

04

switch漏洞

switch中是先将类型转为整形,再进行判断。

PHP作为弱类型语言,类型转换的时候,会有很大漏洞。

转换的时候,如果将字符串转换为整形,从字符串非整形的地方截止转换,如果无法转换,将会返回0。

$i ="abc";switch($i) {case0:case1:case2:echo"i是比3小的数";break;case3:echo"i等于3";
}

结果如下:

i是比3小的数。

05

intval强转漏洞

PHP作为弱类型语言,类型转换的时候,会有很大漏洞。

转换的时候,如果将字符串转换为整形,从字符串非整形的地方截止转换,如果无法转换,将会返回0。

phpvar_dump(intval(2));//2var_dump(intval(3abcd));//3var_dump(intval(abcd));//0

以上就是本次分享的所有内容

 

分享到:

  admin

注册时间:

网站:0 个   小程序:3 个  文章:0 篇

  • 453

    网站

  • 9

    小程序

  • 3601

    文章

  • 83

    会员

赶快注册账号,推广您的网站吧!
热门网站
最新入驻小程序

跳一跳2022-08-22

跳一跳是微信开发的一款小游戏,有

数独大挑战2018-06-03

数独一种数学游戏,玩家需要根据9

答题星2018-06-03

您可以通过答题星轻松地创建试卷

全阶人生考试2018-06-03

各种考试题,题库,初中,高中,大学四六

运动步数有氧达人2018-06-03

记录运动步数,积累氧气值。还可偷

每日养生app2018-06-03

每日养生,天天健康