给需要关心安全的技术人员的一些建议

随着网络,尤其是移动互联网的发展,网络服务与我们的个人生活越来越紧密地联系在一起。处理金融业务、生活费用、获取信息等。全部从离线移动到在线。一个新的时代肯定会到来或已经到来,这是一个万物相互联系的时代。同时,网络安全事件频繁发生,安全事件的危害越来越严重。互联网从业者需要越来越关注安全问题。这里有一些提示给刚刚接触网络安全的开发人员。

给需要关心安全的技术人员的一些建议

一、“安全”是什么

对于没有暴露在安全环境中的开发人员来说,一个常见的问题是如何编写安全代码或创建一个安全系统。为了找到答案,我们必须理解安全的定义。“安全性”是一个非常宽泛的概念,所以这里有一个非常宽泛的定义:受保护对象不会被损坏、篡改或泄露,系统功能可以正常运行。你糊涂了吗?”安全”定义中的关键问题是:保护的对象是什么,保护的需要是什么;没有明确的安全要求,我们就不能谈论安全。例如,常见的安全问题包括通信协议是否安全、数据存储是否安全等。此外,还有操作环境是否安全以及代码是否安全。因此,在我们想编写安全代码或实现安全系统之前,我们可以先问问自己我想保护什么。不同的安全要求需要不同的安全保护方法。如果你不知道你想要什么,那你就不会得到它。

理解了安全的定义后,下一个问题是:你如何知道实施的安全措施是否足够安全?安全防御和安全攻击是一个动态的游戏过程。就像抗生素和细菌一样,防御和攻击技术也在不断升级。因此,我们说没有绝对的安全,安全问题是成本问题。我们通常需要寻找的是如何以最低成本满足安全需求的最佳实践。

二、如何入门“安全”

孙子云“知己知彼,百战不殆”,所以读几本关于黑客如何攻击和防御自己的书是个不错的选择。这些书的内容可能涉及计算机的一些基本知识,所以这些知识也是不可或缺的,否则我们只能知道它们,但不知道为什么。黑客攻击和防御的引入将导致计算机系统、网络、计算机体系结构、编译原理、虚拟机等方面的一些基础知识。

黑客如何攻击和保护自己是理论基础。有了这个理论基础,我们就可以看到现实世界中存在哪些普遍的安全问题。CWE是一个常见的缺陷,它列出了许多常见的安全缺陷。我们可以从25个最常见的问题开始,帮助我们在编码时避免许多安全问题。如果开发的系统是一个网络系统,那么OWASP就是一个不容错过的数据库。OWASP包含网络上常见的问题和最佳实践,您可以了解10个最受欢迎的OWASP问题。例如,两个列表中都提到了SQL注入,这是一个常见的问题,具有很高的发生率和几十年的历史。

接下来,我们可以看看行业中更好的安全实践。SEI证书编码标准是一种安全编码标准。它按类别列出了在C、Java和其他语言中常见的安全问题,并解释了安全问题,为我们提供了不安全的代码示例和安全的代码示例。这个规范是帮助我们快速理解安全问题和实践安全编码的一个很好的起点。

三、对“安全”问题的宏观分类

安全问题各种各样,令人眼花缭乱,那么这些安全问题有什么共同点吗?答案是肯定的。我们试图将安全问题分为以下宏观类别。

1. 不受信的输入、输出

挺立,没有欲望,你会变得坚强。如果系统不与不受信任的环境交互,系统的安全问题相对较小。大多数系统,尤其是网络系统,需要与不受信任的环境交互。在交互过程中,我们需要特别注意两个问题:输入是否合法以及输出数据是否包含敏感信息。

输入数据包括但不限于用户输入参数、输入文件、读取环境变量、依赖运行时等。如果用户输入的数据超出了程序处理的范围,可能会导致意想不到的结果。对于这些不受信任的数据,我们通常可以限制输入范围,只接受我们可以处理的输入。例如,在网站注册期间对密码符号有一些限制。这就是解决办法。我们还可以清除输入数据,以删除不支持的内容。

对于输出数据,我们需要关心输出内容是否包含敏感信息,如程序路径、用户名、密码、IP地址等。如果我们泄露服务器的用户名和密码,那么服务器上的所有信息都有被泄露的风险。这要求我们在程序发布前仔细检查输出。

2. 程序本身有错误

如果程序本身有错误,它会给攻击者一个机会。一旦程序触发了错误的逻辑,程序可能会偏离正常的运行过程,例如运行攻击者提供的程序。

对于C语言,常见的程序错误包括空指针引用、内存未释放、内存释放多次、数组引用越界、堆栈返回地址、整数溢出等。这要求代码编写人员提高代码编写质量,并将程序错误降至最低。

对于Java语言,在C语言中没有类似的内存管理问题,但也有整数溢出、数组引用越界和引用空对象等问题。此外,Java语言还存在特定于Java语言的问题,如运行时库函数调用错误、类型定义错误、序列化和反序列化错误等。

3. 其它错误问题

我们将其他安全问题分为不同的类别。这些安全问题包括但不限于以下内容:

四、一些安全实践的建议

安全问题不是理论性的,而是实践性的。只有在实践中才能出现真正的知识,才能提高安全性。这里有一些小建议给你。

第一个建议是重视安全问题,设计和实施安全问题,并测试安全问题。西方哲学家说“解决问题的第一步是承认问题”,老子说“知不知道”,这就是意思。

第二个建议是找到并使用工具来帮助解决安全问题。行业中已经存在许多工具来帮助我们检测不同阶段的安全问题。

安全问题不是单点问题,而是系统问题。没有灵丹妙药,也没有治疗所有疾病的特效药。我们能做的是在安全问题发生之前充分理解、模拟和警告它们,并采取有效的预防措施。我们做的保护越多,攻击者的攻击区域就越窄,攻击成本就越高,系统中出现安全问题的概率就越低。一千英里的旅程始于一步。现在是开始理解和重视安全问题的恰当时机。

极牛网精选文章《给需要关心安全的技术人员的一些建议》文中所述为作者独立观点,不代表极牛网立场。如若转载请注明出处:https://geeknb.com/4636.html

(39)
打赏 微信公众号 微信公众号 微信小程序 微信小程序
主编的头像主编认证作者
上一篇 2019年11月19日 上午9:00
下一篇 2019年11月19日 上午9:31

相关推荐

发表回复

登录后才能评论
扫码关注
扫码关注
分享本页
返回顶部