当前位置:   article > 正文

谁说PHP是世界上最好渗透的语言?

php是世界上最安全的语言,真的吗?

阅读本文大概需要10分钟。


最近在知乎上刷到一个问题:

下面的回答中,也有很多人有这样的想法:PHP开发的应用安全性不好。

不得不说,这的确是很多人心里的刻板印象,这个刻板印象从2000年代开始,几乎伴随着PHP的成长,直到今天仍有大量安全及运维人员认为PHP开发的网站更容易出现漏洞。

不得不说,这个说法也不是无稽之谈,即使在今天,网络上公开的CMS漏洞、渗透测试报告中,PHP相关应用仍然占据大部分。但是,这和“PHP开发的应用安全性不好”这个结论是没有因果关系的,我今天就来给PHP平反。

1

PHP网站被渗透多代表其不安全?

这个误解就是原提问者的误区,在原回答中,也有不少人找到了一些原因。

PHP语言使用量很大,就像我们不能说世界上每天死掉的人里中国人更多,就说中国人更容易死:

PHP学习成本更低,导致更多水平偏低的人参与PHP应用开发,导致漏洞更多:

PHP开源的网站系统更多,只要出现一个漏洞,就可以拿下一堆网站:

我觉得还有一个原因是,往往使用PHP网站的都是一些站群、非法网站等,渗透这些网站风险更低、回报和性价比更高,所以也让你觉得PHP被渗透的更多:

另外,相比于PHP,Java开发的网站往往用在一些大型企业,而通常渗透成功大型企业的人,不是被抓了就是把漏洞提交给了相关厂商,这导致这些案例也没有流传到外面去,自然你也不知道:

2

PHP语言本身设计的不如其他语言安全吗?

当然,尽管原答案里很多人给PHP打抱不平,也有一些人就是认为PHP的安全性不如其他语言:

这个人认为Java的网站安全性高很多,显然这是另一个误区。

太久以前的情况我们就不说了,就来细数一下这些年影响安全圈的一些比较严重的系列漏洞吧。

  • Struts2系列漏洞:这个不说了,当年通过S2-016、S2-032、S2-045拿下过多少网站的webshell?其中又有多少是大型企业?

  • Fastjson系列漏洞:著名开源的json解析工具,最早只要使用json通信即可直接getshell,后来修复绕过修复又绕过又修复,直到今天都没完全解决问题。这个也是影响过多少BAT级别大厂?

  • Weblogic系列漏洞:Weblogic已经成为安全圈研究者刷成就的一个软柿子了,因为其设计不合理,导致漏洞几乎修不掉,HTTP和T3协议都出现过直接getshell漏洞,且大量国企、外企使用,导致扩大了漏洞影响力

  • ThinkPHP系列漏洞:ThinkPHP3出现过多个SQL注入漏洞,ThinkPHP5出现过两个代码执行漏洞,之前用来渗透一些非法网站非常有效

  • Java反序列化系列漏洞:这个也不用说了吧,当时出来以后几乎席卷了所有Java开发的应用,包括WebLogic、WebSphere、JBoss、Jenkins、OpenNMS等等,且很多利用起来几乎无条件,都是直接getshell。

  • Shiro系列漏洞:今年HW大家可能更喜欢Shiro了吧,也是反序列化导致的直接getshell

你其实可以看看,这里面到底有几个是PHP的?只有一个ThinkPHP吧,但是ThinkPHP在大型企业里用的多吗?对于国家安全、企业安全来讲,究竟是什么语言开发的应用更加不安全?

至于上图中答主说到的Discuz一出来反复被爆,作为一个安全研究者,我不能说这个东西绝对不可能有0day,但是我觉得被爆更可能是你自己的配置问题。

所以其实,PHP的设计在安全上,虽然的确有一些不合理的地方,但绝对不比其他语言更差,特别是Java。

3

PHP的生态环境不如其他语言好吗?

仔细思考一下你会发现,PHP相关CMS出现的安全问题,大部分是开发者的问题,PHP这门语言本身问题就那么些,这些年已经慢慢都废弃了。

而Java,反序列化、JNDI注入、RMI漏洞等等,这些都是Java这门语言自身的设计问题(当然这些年Java也在慢慢改进),有时候你即使按照开发规范开发,也可能会出现严重的安全漏洞。

所以,如果你是一个开发人员,你只要好好学习安全开发规范,使用Laravel、Symfony等现代开发框架开发PHP应用,可以认为出现低级漏洞的可能性很小,完全不必担心。

有人提到了PHP生态的几个硬伤:

webshell那一段的确有道理,PHP这种部署方式的确给getshell带来了极大的便利,但其实这也不是只有PHP独有的特点,JSP和ASPX的默认部署方式也存在类似的问题,这些是答主不知道还是假装不懂?

PHP很长时间没有预编译支持,这个“很长时间”指的是PHP 4吗?mysqli是PHP 5.0就有了,PDO是PHP 5.1就有了,不知道为什么有那么多人认为“PHP很长时间没有预编译支持”,是不是你们以为PHP 7废弃了mysql系列函数才代表新引入了预编译?

最后一个就是无稽之谈了,“前后端不分离”是PHP发明的?PHP不能做前后端分离?PHP有自带的模板引擎?

不过我认为PHP生态下的确有很多问题,包括很多人不用预编译、不用安全的模板引擎,但是这些缺点的影响,我觉得不如Java的那些缺点影响更大。很多人用springboot做的应用来和纯PHP开发的应用做比较,这个我觉得是不公平的。


最后,我个人其实也更喜欢渗透PHP开发的应用,但是我承认这是因为我水平有限,很多Java开发的应用源码很复杂,我挖不到漏洞,而不是因为PHP的安全性更差。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/480865
推荐阅读
相关标签
  

闽ICP备14008679号