搞安全开发都是用什么编程语言?

Posted 代码熬夜敲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搞安全开发都是用什么编程语言?相关的知识,希望对你有一定的参考价值。

  1. 很多小伙伴都在微信上问我:搞安全开发,到底开发个啥,都是用什么编程语言?

    今天就来详细说说这个话题,我打算从安全公司研发的产品这个角度来切入,看看都有哪些产品,以及都用到哪些语言。

    安全公司的产品研发,主要是下面这些东西,下面分别来说一下。

    WAF(Web网站应用防火墙)
    数据库网关
    防火墙、IDS、IPS
    NTA(网络流量分析)
    SIEM(安全事件分析中心、态势感知、大数据安全分析)
    EDR(终端设备上的安全软件)
    DLP(数据泄漏防护)
    UBA(用户行为分析)
    杀毒软件
    安全检测沙箱

    WAF WAF全称Web网站应用防火墙,是一种特殊的防火墙,专门用来保护Web应用安全的安全产品,主要防御SQL注入、XSS注入、CSRF、CC攻击之类的网络攻击。


    这类产品一般有两个流派。一种是基于底层网络流量来做,一种是基于nginx/openresty这类上层WebServer来做。

    基于底层流量分析引擎的来做的,以 C/C++ 为主。

    基于nginx/openresty引擎来做的,以C/C++ 和 Lua为主。

    数据库网关 和WAF有点类似,但保护的目标不是Web应用,而是数据库。

    毕竟,对于绝大多数互联网公司来说,WebServer和数据库是支撑他们业务中最重要的两个角色,所以守护好这两个东西是必须的!

    数据库网关,主要负责防御对数据库的攻击,检测高危操作,数据安全备份等。

    用到的编程语言以C/C++ 和 Java为主。

    现在云计算时代,很多公司的业务都放在了云端,这些云计算厂商相应的也都有推出自己的安全防护服务,WAF、数据库网关、DDOS云盾三大件是标准配置。


    数据库网关,主要负责防御对数据库的攻击,检测高危操作,数据安全备份等。

    用到的编程语言以C/C++Java为主。

    现在云计算时代,很多公司的业务都放在了云端,这些云计算厂商相应的也都有推出自己的安全防护服务,WAF、数据库网关、DDOS云盾三大件是标准配置。

    杀毒软件 最常见的,普通人最能直接接触的应该就是安全软件了。

    主要涉及到的技术有病毒木马分析、驱动开发,使用的编程语言主要是C、C++。

    NTA、防火墙、IDS、IPS NTA就是网路流量分析的简称,IDS是入侵检测系统,IPS是入侵防御系统。

    这类东西,主要是基于网络流量的安全检测和防御产品。涉及到网络抓包、抓包分析等东西。

    一般来说,这类产品对性能要求特别高,因为通常需要处理非常大的流量数据,10Gbps的万兆网络流量分析是常规操作。

    所以,这部分抓包、分析比较底层的引擎基本都是用 C/C++ 来开发。

    SIEM SIEM全称Security Information Event Management(安全信息事件管理中心),差不多就是很多公司中的大数据安全分析系统、态势感知系统之类的玩意儿。

    那些看起来各种高端大气狂拽炫酷的界面,基本上都是这种产品:

    这是一个安全分析平台,通过汇集多方(网络流量、日志、威胁情报、沙箱检测等)产生的数据,并对这些数据进行关联分析,然后判断有没有安全风险,产生安全告警。

    SIEM,基本上很多公司都有,但真正做得好的不多,想要做好,除了数据源的高价值,对分析算法、算法模型都有非常高的要求,这方面的人才很难找。

    这块偏重于业务层的分析工作,涉及各种处理,在我见到的各大公司产品中,主要是Java开发,毕竟Java背后的大数据生态是一大优势,对于数据挖掘,关联分析都是紧密相关的。

    EDR 全称终端安全响应系统,是运行在终端设备上的一套软件。

    其实跟我们常见的杀毒软件很像,除了具备基础的安全防御功能,保护主机免受攻击,还会将主机上发生的一些事情汇报到SIEM用于安全分析。

    EDR和杀毒软件类似,也是用 C/C++ 开发。

    UBA 全称用户行为分析,是基于EDR、NTA等产品的产生数据之上,用来分析用户行为的一套系统。

    简单来说,这玩意根据收集到的员工的行为(电脑上的操作、上网数据等),可以分析出,这个用户是不是异常,有没有干什么坏事。

    比如某个用户工作时间微信相关的IP产生的流量非常多,则很有可能判断这家伙上班经常群聊摸鱼~

    这套系统是一套纯后端系统,一般也是使用Java开发。

    DLP 全称数据泄漏防护,也是运行在终端设备上的一套软件,当然也有一些不在终端而以网关形式存在。


    不同于杀毒软件和EDR,DLP的主要作用是防止主机上的数据泄露。一般用在一些比较重要的单位中,员工电脑上的数据非常重要,用于防止窃密事件发生。

    主要涉及的技术是驱动开发技术,流量分析技术,用的编程语言也是C/C++

    安全检测沙箱 病毒木马和Exploit的分析,除了传统的基于特征和规则的静态分析引擎之外,动态分析技术是另一个重要的补充。而动态分析中,则主要是以沙箱分析为代表。

    所谓沙箱,就是一个虚拟的执行环境,将待分析的目标丢进去,观察并记录其行为,从而判定其威胁程度。

    沙箱用到的技术主要有内核驱动开发、虚拟化技术、后端服务系统。

    底层的分析引擎主要是C/C++开发,上层的安全分析主要是Python

    总结 以上就是安全行业常见的一些产品了。

    编程语言上面呢,C/C++是主流,尤其是在终端侧的产品上,无一例外是C/C++。

    在后端的安全系统方面,涉及到流量分析等对性能要求很高的场景,也一般是C/C++,若涉及数据关联分析,则Java比较多。

    除此之外,有一些小型的后端服务也会采用Python进行开发。

    基本上,C/C++、Java、Python,就是安全开发领域的三大主流技术栈了。

    最后限于见识有限,可能列举的不全面,欢迎大家补充。

以上是关于搞安全开发都是用什么编程语言?的主要内容,如果未能解决你的问题,请参考以下文章

现在一般的软件是用啥语言编写的?

手机游戏是用啥开发的?

几乎所有的操作系统内核都是用C语言写的,你知道为什么吗?

如何查看网站是用啥语言开发的

请问现在的电商APP软件是用啥语言编写的?

为什么需要权限管理