C 语言漏洞最严重,PHP 最易受攻击,程序员该怎么写代码?「建议收藏」

C 语言漏洞最严重,PHP 最易受攻击,程序员该怎么写代码?

大家好,又见面了,我是全栈君。

论编程语言的安全性,作为历史最悠久的编程语言,C 仍然是开源漏洞最多的一个,但 PHP 的变化却最大,为什么 PHP 更容易受到攻击?

C 语言漏洞最严重,PHP 最易受攻击,程序员该怎么写代码?「建议收藏」

开源漏洞又一次出现了增加的趋势。

自 2017 年以来,我们看到社区报告的开源漏洞数量迅速增加。过去的一年也不例外,WhiteSource 的《开源漏洞状况》报告发现,2019 年共计报告了 6,100 个漏洞,而 2018 年报告的漏洞为 4,100 个。

两年之间的上升率高达 50%本身就可以上头条了。该报告还分析了哪些语言的开源漏洞最多,每种语言最常见的漏洞是什么,以及这些结果对于软件开发社区如何构建应用程序的启示。

2019 年每种语言最严重的开源跨站脚本

在 2019 年发布的开源漏洞中,跨站脚本(Cross-site scripting,即 XSS)几乎是所有顶级编程语言中最常见的漏洞类型。

C 语言漏洞最严重,PHP 最易受攻击,程序员该怎么写代码?「建议收藏」

在上述编程语言中,最严重的是 C 语言出现的缓冲区错误(CWE-119),而带有输入验证不当(CWE-20)漏洞位居第二。

通过这些数据,我们可以看出与软件开发社区有关的常见问题。具体来讲,其中的许多漏洞都是由于开发人员没有适当限制用户可以执行的操作而造成的,也因此破坏了 Web 应用程序的安全性。

在大多数情况下,这些安全漏洞的原因都是编程不够严谨。这些漏洞表明,重视基本的编码标准对安全至关重要。

每种语言发布的开源漏洞比率

从整个报告来看,在过去的一年中,这些流行语言中开源安全漏洞的分布有所变化。

C 语言漏洞最严重,PHP 最易受攻击,程序员该怎么写代码?「建议收藏」

尽管 C 仍然是开源漏洞最多(占 30%)的语言,但这是因为 C 是最古老的语言之一,我们至今仍在使用一些非常受欢迎的开源项目。无论你喜欢还是讨厌 C 语言,无可否认,没有其他语言可以与 C 编写的大量代码竞争。

然而,令人不解的是 PHP 的变化最大,从 2009 年开源代码漏洞的 15%一路上升到 2019 年的 27%。我们不禁开始思考两个问题:首先,PHP 更容易受到攻击的原因是什么?其次,人们是否仍然真的在使用 PHP?

根据 2019 年 9 月的 TIOBE 指数报告,PHP 因其易用性而广受软件开发技术力有限的 Web 设计师的欢迎,因此 PHP 变得越来越流行。该语言似乎用其易用性交换了安全性,而如今社区越来越擅长发现漏洞,因此这种折中方案很快就会成问题。

WordPress 等流行的应用程序仍在使用 PHP,但是这些应用程序的流行度也会很快下降。也就是说,趋势表明,PHP 的使用正在下降,如今开发人员倾向于使用更流行的语言,例如 Python,在过去的几年中,该语言一直位居榜首,而且 Python 语言的漏洞发生率一直保持在较低水平。

成千上万的人都在聚焦开源的安全性

第三个问题是为什么我们如今会看到 PHP 的漏洞增加。尽管我所说的答案没有经过验证,但是我们可以从某种角度看待开源和应用程序开发的趋势。

随着更多开源代码的问世,开源社区也受到了越来越多人的注目。我们还会考虑通过增加自动化工具的使用来帮忙发现更多漏洞,因此被发现、修复和发布的 bug 也越来越多。由于通过 GitHub Security Lab 直接报告开源安全漏洞非常便利,因此已发布的漏洞数量将持续增加,尤其是拥有大量代码库但以前可能没有受到严格审查的语言。

由于 WordPress 和 Drupal 等开源项目中大量使用了 PHP,因此还有很多 PHP 项目正在使用中。研究人员正在审查这些项目,而且他们发现了代码中可能一直存在尚未报告的漏洞。

前进的方向是更好的编程实践

本质上,安全漏洞就是一些 bug,它们可能会导致应用程序及其数据遭受破坏。当编程错误威胁到数据的可访问性、完整性或机密性时,就属于安全漏洞领域。在大多数情况下,这些漏洞只是一些人为错误。只要人类继续编写代码,错误就会发生,漏洞也会出现在我们的项目中。

因此,我们的问题是如何管理所使用软件中的漏洞。首先,最重要的是我们需要遵循最佳实践来进行安全编程。虽然批评某人的代码不够严谨很简单,但只有批评还不够,我们还需要提升自我。

除了遵循编程的最佳实践外,我们还需要检查代码中的漏洞,而不仅仅是在部署之前。在依赖项之上构建了核心应用程序,却发现其中存在一些严重的漏洞,这是一件十分痛苦的事情,你不得不含泪默默地重新编写这部分代码。如果你了解软件开发生命周期各个阶段测试错误的重要性,那么就应该明白检查可能将你和用户置于危险之中的安全漏洞同样重要。

C 语言漏洞最严重,PHP 最易受攻击,程序员该怎么写代码?「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/111817.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 【小制作】WIFI智能窗帘的制作[通俗易懂]

    【小制作】WIFI智能窗帘的制作[通俗易懂]自从之前做了个智能插排后,近期事忙,也就没时间搞新东西(其实是懒),最近老婆说要装个窗帘,突发奇想,要不装个智能窗帘算了,上某宝搜了一下,这玩意还挺贵,后来想想,算了,不如自己开发一个算了,顺便练练手,以后连上我之前开发的控制端,还可以统一控制。

  • 面向对象与面向过程的本质的区别

    面向对象与面向过程的本质的区别前言:如果你很想搞明白面向对象是什么,面向过程是什么,或者说二者之间的区别是什么,那么就花费一点时间来研读一下这篇博客,你一定会有很大的收获的!一、面向对象与面向过程的区别面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个

  • jdk8 hashmap线程安全吗_Python中的线程

    jdk8 hashmap线程安全吗_Python中的线程前言只要是对于集合有一定了解的一定都知道HashMap是线程不安全的,我们应该使用ConcurrentHashMap。但是为什么HashMap是线程不安全的呢,之前面试的时候也遇到到这样的问题,但是当时只停留在***知道是***的层面上,并没有深入理解***为什么是***。于是今天重温一个HashMap线程不安全的这个问题。首先需要强调一点,HashMap的线程不安全体现在会造成死循环、数据丢…

    2022年10月11日
  • SQL like子查询

    SQL like子查询like子查询字符匹配:%(百分号)任意字长度(可以为0)的字符_(下横线)代表任意单个字符eg:a%b表示以a开头,以b结尾的任意长度的字符。三个常用的字符串截取函数:substr(column,1,n)left(column,n)right(column,n)str=’abcdefg’substr(str,1,3):’bcd’left(s…

  • 浅谈linux的命令行解析参数之getopt_long函数「建议收藏」

    浅谈linux的命令行解析参数之getopt_long函数「建议收藏」前言     在linux中,经常需要各种命令,通常情况下都会带各种参数,而这些参数是如何解析的呢?通常使用GNUC提供的函数getopt、getopt_long、getopt_long_only函数来解析命令行参数。一、关于命令行参数   命令行参数可以分为两类,一类是短选项,一类是长选项,短选项在参数前加一杠"-",长选项在参数前连续加两杠"–",如下表(ls命令参数)所示,…

  • ajax 长轮询_js 轮询

    ajax 长轮询_js 轮询1.三者介绍【1】http协议介绍1)介绍:http协议是请求/响应范式的,每个http响应都对应一个http请求,http协议是无状态的,多个http请求之间是没有关系的;2)http协议的被动性:在标准的HTTP请求响应语义中,浏览器发起请求,服务器发送一个响应,这意味着在浏览器发起新请求前,服务器不能发送新信息给客户端浏览器;【2】htt

    2022年10月14日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号