当前位置: 首页 > 科技观察

每个开发人员都应该知道的安全编码实践_0

时间:2023-03-17 20:43:05 科技观察

Translator|张增斌策划|徐杰成如今,为了缩短软件的上市时间,几乎每个企业都在寻找加速软件开发进程的方法。但其中,一大批企业并没有充分考虑到与软件安全相关的问题。那么作为软件开发人员,如何保证开发过程的安全呢?软件开发工程师可以使用多种方法来保证代码和数据的安全。1.模块化编码软件已经成为我们日常生活中如此重要的一部分,以至于我们遵循安全的编码实践才有意义。毕竟软件开发工程师要对代码的安全负责,我们需要保证代码的安全不被破坏。好消息是安全编码实践并不新鲜。事实上,大多数有经验的软件开发工程师已经熟悉其中的一些规则。安全编码最基本的概念之一是处理异常的概念。异常的发生可能有多种原因,包括拼写错误、逻辑错误或配置错误。为了使软件更安全,必须假设在某个时刻会发生异常。与其让这些事件发生,不如通过捕获它们并执行一些操作来阻止代码继续执行。2.代码混淆代码混淆是防止黑客访问应用程序中的敏感信息的重要实践。另一方面,代码混淆涉及各种技术,例如算术混淆,它将正确的值替换为误导的值。字符串加密是另一种代码混淆方法,它存储隐藏在可执行文件中的字符串,然后在运行时显示原始值。代码混淆使代码难以阅读,通过删除换行符和空格,它降低了代码的可读性。这种做法是提高程序性能的好方法,但同时也存在很多代码混淆的风险。虽然它可能看起来无害,但它可能会带来严重的安全后果。例如,如果攻击者可以读取软件代码,他们就可以使用它来提取API密钥或密码等敏感信息。使用代码混淆的主要好处是它可以使应用程序更轻便,代码执行更高效。此外,它还可以保护您的知识产权。在某些情况下,攻击者通过揭示代码中的安全漏洞来敲诈行业巨头。这是应用开发工程师常用的保护不同程序代码的方法。因为用肉眼直接查看代码时,混淆代码几乎是不可理解的。3.访问控制安全编程最重要的方面之一是访问控制。它允许开发人员限制对敏感数据的访问,同时防止访问不受信任的数据。它还通过限制对具有正确权限的用户的访问来防止系统中的数据泄漏。除非经过身份验证,否则用户将无法登录管理页面。为确保安全的编码实践,开发工程师应评估其软件开发生命周期的成熟度以及开发工程师的技术堆栈。安全编码实践只能由称职且经验丰富的开发工程师实施。开发工程师应该能够在提交代码之前验证系统设计和验证输入。访问控制是安全编码框架的一个重要方面,开发工程师必须了解如何实施它。缺乏适当的访问控制可能会导致灾难。幸运的是,有许多技巧和工具可以帮助开发工程师保护他们开发的软件。例如,开发工程师应该始终对敏感数据进行加密并以加密形式存储。为了进一步提高安全性,开发人员应将敏感数据嵌入本地参数存储、var文件和代码存储库中,切勿让它们处于不受保护的状态。安全编码是开发工程师设计代码以遵循安全最佳实践的过程。此过程保护已发布的代码免受已知和未知漏洞的影响。它还可以防止黑客利用安全漏洞并将其用作攻击系统的工具。成功实施安全编码实践需要在公司内部进行文化变革。4、防止反射型XSSXSS攻击有两种类型:持续性攻击和反射型攻击。持久性XSS攻击针对易受攻击的网站或应用程序的所有用户。当攻击者将恶意脚本注入链接,并且用户单击它执行它时,它就会起作用。另一方面,反射型XSS只需要用户单击一次。这种类型的XSS攻击使用JavaScript代码在受害者的浏览器中运行并利用各种漏洞。该代码还可用于获取用户计算机的访问权限、加入僵尸网络或窃取敏感的用户数据。大多数反射型XSS攻击都是基于社会工程技术。攻击者可以通过制作虚假的登录页面来诱使用户相信他们正在登录安全网站。这允许攻击者窃取用户的密码管理器,从而导致安全漏洞。反射XSS攻击更难检测。攻击者通过钓鱼邮件向受害者发送恶意URL。受害者的浏览器然后加载站点的搜索页面。后端处理搜索词,攻击者将恶意脚本插入到响应中。另一种类型的XSS攻击涉及使用不受信任的输入。这些攻击是攻击者渗透网站并攻击其用户的好方法。出于这个原因,开发工程师应该采取措施通过遵循安全编码实践来保护他们的Web应用程序。例如,使用OWASPCodingProject库,开发工程师可以通过启用“X-XSS-Protection”标头轻松保护他们的Web应用程序。5.在开发过程早期发现的漏洞软件漏洞是应用程序设计或实现中的弱点,可能允许未经授权的用户运行命令或利用系统。虽然并非所有软件安全漏洞都是实施错误,但大约一半可利用的安全漏洞是由于软件设计缺陷造成的。这意味着组织在识别和修复潜在漏洞时需要时刻保持警惕。漏洞按严重性和风险分类,可能会影响软件、服务器和网络。如果不修补漏洞,网络犯罪分子可能会利用它们窃取敏感数据、中断服务或破坏公司资产。因此,在开发过程的早期识别并修复漏洞非常重要。漏洞可分为高风险或低风险。这就是为什么以系统的方式确定漏洞的严重性和修复的优先级很重要。一旦确定了漏洞,公司就可以使用漏洞评估来确定对此负责的组件,并确定哪些组件需要更新或配置更改。漏洞是由不良的输入验证和过滤引起的。如果攻击者发现敏感输入,他们可以运行任意命令,包括JavaScript、SQL查询或SMTP参数。他们甚至可以远程控制服务器和访问底层应用程序数据。6.记录安全编码实践安全编码实践是网络安全的重要组成部分。他们要求开发工程师负责保护他们的代码免受恶意攻击和威胁代理。开发工程师应该遵循几种不同的做法。以下只是几个例子。无论您的平台、语言或实现如何,您都应该遵循安全编码实践。一般来说,安全编码实践侧重于编写没有已知漏洞的代码,这些漏洞可能会暴露数据或对系统造成损害。当应用程序不安全时,黑客可以访问它们并使用它们包含的信息来渗透系统。此外,不安全的应用程序会对公司的声誉产生负面影响。安全编码实践旨在检测和消除软件应用程序中的这些漏洞,最大限度地减少数据损坏的可能性并允许安全地使用应用程序。开发工程师必须理解这些问题并适当地记录它们。大多数漏洞是由典型的编程错误引起的。通过收集常见的编程错误和安全编码实践,开发工程师可以创建测试用例以确保他们的代码遵循这些规则。此外,开发工程师可以使用代码签名过程来保护他们的软件代码免遭篡改。使用测试用例和实施记录,开发工程师可以帮助调试错误。每个开发工程师都应该理解的记录的安全编码实践应该包括指南和最佳实践。理想情况下,文档应包含示例和易于实现的语言。它还应包括有关手动测试和合规性测试的指南。原文链接:https://hackernoon.com/secure-coding-practices-every-developer-should-know译者简介张增斌,社区编辑,多年安全攻防经验。主要研究方向为:安全开发、逆向破解、漏洞挖掘、黑灰产生攻防对抗。