研发安全(一)——研发人员必须掌握的安全开发常识

研发安全(一)研发人员必须掌握的安全开发常识

1 引言

随着信息技术的不断发展,软件安全问题逐渐凸显,成为了软件研发过程中不可忽视的重要方面。作为研发人员,掌握安全开发常识,不仅有助于提升软件产品的安全性,还能够有效预防潜在的安全风险。本文将讲述研发人员必须掌握的安全开发常识。

2 必备认知

2.1 理解安全开发的重要性

研发人员需要理解安全开发的重要性,并意识到安全漏洞可能导致的严重后果,包括数据泄露、系统被攻击等。他们应始终将安全性作为软件设计、开发和测试的重要考量因素。

2.2 熟悉常见的安全漏洞类型

研发人员需要对常见的安全漏洞类型有深入的了解,如SQL注入、跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等。他们应熟悉这些攻击原理,并掌握相应的防范措施,以防止恶意代码注入和非法访问。

2.3 保护数据和隐私

对于数据的保护和隐私的维护也是研发人员必须重视的方面。他们需要了解如何采用安全的密码存储和传输方式,防止密码泄露;同时,也需要对敏感信息进行加密处理,确保其在传输和存储过程中的安全性。

2.4 进行输入验证和过滤

在开发过程中,输入验证和过滤是防止安全漏洞的重要手段。研发人员应对用户输入进行严格的验证和过滤,防止恶意代码的注入。同时,他们还需要对应用程序的错误处理进行规范,防止敏感信息的泄露

2.5 遵循安全编码规范和关注最新安全动态

了解并遵循安全编码规范也是研发人员必备的认知之一。这些规范可以帮助他们避免使用不安全的函数和API,减少潜在的安全风险。此外,研发人员还需要关注最新的安全动态和技术发展,持续学习和提升自己的安全意识和技能水平。他们应定期参加安全培训、阅读安全相关文献、关注安全社区等,以了解最新的安全威胁和防护措施。比如常见安全研发认知规范:

  • 【强制】禁止开发模拟登录功能
  • 【强制】禁止开发万能借口
  • 【强制】生产操作严格执行双人复核

3 必知规则

3.1 数据校验

  • 完整性校验:所有传输或存储的数据都应进行完整性校验。这通常通过添加校验和、哈希值或数字签名来实现。这些校验机制能够检测数据在传输或存储过程中是否遭到篡改或损坏。

  • 输入验证:对于所有用户输入的数据,必须进行严格的验证。这包括检查数据类型、格式、长度以及是否包含潜在的危险字符或代码。输入验证有助于防止SQL注入、跨站脚本攻击(XSS)等安全漏洞。

  • 范围校验:对于数值型数据,应设置合理的范围限制。这有助于防止因输入超出预期范围而导致的程序错误或安全漏洞。

  • 一致性校验:在数据处理的各个环节,都应进行一致性校验。例如,在数据更新或删除时,应检查相关数据是否保持一致;在数据合并或转换时,应确保数据格式和逻辑的一致性。

  • 【强制】禁止向Runtime.exec()方法传递不可信、未净化的数据

  • 【强制】禁止直接使用不可信数据来拼接XML、SQL语句

  • 【强制】禁止未经验证的用户输入直接输出到html界面

  • 【强制】禁止程序数据进行增、删、改、查时对客户端请求的数据过分相信而遗漏对于权限的判定

3.2 敏感信息

  • 【强制】禁止在日志中明文保存用户敏感数据
  • 【强制】基于hash算法的口令存储必须加盐值(salt)
  • 【强制】敏感数据在跨信任域之间传递采用签名加密传输
  • 【建议】邮件传输时需要使用安全协议SSL/TLS加密传输,避免攻击者在网络上嗅探到用户数据

3.3 加密算法

  • 【强制】禁止使用不安全的加密算法DES\3DES
  • 【强制】敏感数据加密使用强随机数
  • 【建议】非对称加密算法RSA的使用需要注意长度至少为2048位
  • 【一般】Base64是编码算法不是加密算法

3.4 序列化和反序列化

  • 【建议】最小化序列化的数据:只序列化必要的对象状态,而不是整个对象或其方法。这有助于减少潜在的安全风险,因为更少的数据意味着更少的攻击面。
  • 【建议】安全地处理反序列化:反序列化过程中,要特别注意数据的来源和完整性。不要信任来自不受信任源的反序列化数据,因为它们可能包含恶意代码或攻击。使用安全的反序列化库,并验证数据的完整性和格式。
  • 【建议】类ObjectInputStream在反序列化时,对生成的对象的类型做限制

3.5 I/O 操作

  • 【强制】文件上传应根据业务的需要限定文件的格式和大小
  • 【强制】使用文件、IO流、数据库连接等主动释放资源
  • 【建议】文件下载的地方,应对文件的路径进行校验,或者使用文件id映射到文件的方式下载文件
  • 【建议】临时文件使用完毕应及时删除

3.6 多线程安全

  • 避免共享状态:尽量减少线程间的共享状态。如果可能,尽量将共享数据封装在对象中,并通过方法来访问数据,而不是直接操作共享变量。这样可以减少线程间的耦合度,降低线程安全问题的风险。

  • 使用同步机制:当需要共享数据时,应使用适当的同步机制,如锁、同步代码块或原子变量,来确保对共享数据的访问是线程安全的。

  • 避免死锁:在使用锁或其他同步机制时,要注意避免死锁。死锁是指两个或更多个线程无限期地等待一个资源,而该资源又被另一个线程持有,导致所有线程都无法继续执行。

  • 合理设计线程交互:线程间的交互应该尽可能简单和明确。避免复杂的线程间依赖和通信模式,以减少潜在的安全问题。

  • 安全退出线程:在退出线程时,要确保所有资源都被正确释放,避免资源泄漏或数据不一致的问题。

  • 遵守最佳实践:遵循编程语言和框架提供的最佳实践,使用线程安全的集合类、工具和方法。

原子性:多线程环境中,某些操作必须是原子的,即不可中断的。这意味着这些操作在执行过程中不会被其他线程打断。原子操作在多线程环境下是线程安全的,因为它们要么完全执行,要么完全不执行。

可见性:一个线程对共享变量的修改必须对其他线程可见。这通常涉及到内存模型的理解,因为不同的线程可能在不同的处理器核心或缓存中运行,它们对共享内存的访问可能不是即时的。因此,需要确保共享变量的更新能够被其他线程及时观察到。

有序性:线程的执行顺序和内存访问顺序需要得到正确的控制。编译器和处理器为了提高性能,可能会对指令进行重排序。但在多线程环境中,这种重排序可能导致数据不一致或其他未预期的行为。因此,需要确保操作的顺序在多线程环境下是可预测和一致的。

3.7 框架和组件安全

  • 【强制】禁止使用来源不明的框架和组件
  • 【建议】使用安全版本的框架和组件,官网下载使用前先确认是否有公开的漏洞
  • 【建议】及时更新框架和组件版本

4 结语

掌握安全开发常识对于研发人员来说至关重要。通过树立正确的安全开发意识、遵循安全原则、实施数据安全与隐私保护、进行输入验证与过滤、管理漏洞与风险、遵循安全编码规范、进行安全测试与验证、持续学习与跟踪最新安全动态、跨领域合作与沟通以及遵守合规性与法规要求等多方面的努力,研发人员可以有效提升软件的安全性,为用户提供更加安全、可靠的服务。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
后台开发:核心技术与应用实践 作者:徐晓鑫 著 出版日期:2016年08月06日 封面宣传语:腾讯云平台技术总监黄世飞、Facebook对外支付项目主程张子兴、微软软件工程师彭可竞、阿里巴巴资深算法工程师周乐、百度大数据高级测试工程师畅晋联袂推荐;围绕后台开发需要掌握的核心技术,从多个方面、多个角度进行了阐述,覆盖了该领域的几乎所有内容;充分抓住本质并结合实践,文字通俗易懂,可操作性强 出版书名:后台开发:核心技术与应用实践 作者:徐晓鑫 著 封底文字 专家评价 后台开发是一个“历史悠久”的领域,同时也是一个沉淀深厚,高技术价值的领域。本书清晰、严谨、务实的风格显示出晓鑫对该领域知识的深刻理解。 ——张子兴 Facebook对外支付项目主程,美国加州MenloPark 每一位从事后台开发的专业人士都需要一本后台开发指南。对每一位想要认真从事该领域工作的人来说,本书是一本绝对必读的书籍。 ——彭可竞 微软软件工程师,美国华盛顿州Redmond 本书是作者多年后台开发、架构和研究的精华。书中用通俗的文字、详尽的示例代码,结合实际工作中的案例,讲述了后台开发方方面面的知识,内容丰富。对于从事后台开发人员,这是一本很好的由浅入深的学习书籍。 ——周乐 阿里巴巴资深算法工程师,北京望京 使用C++语言进行后台开发有一定的门槛,本书可以很好地帮助你跨过这个“门槛”。 ——畅晋 百度大数据高级测试工程师,北京上地 前勒口 互联网网民日益剧增,各种应用层出不穷,各项技术更新不断。单是游戏行业,近几年就经历了从端游、页游到手游的巨大变迁,客户端更新迭代之快,始料未及。而后台开发中使用到的技术,却变化不是很大。让服务性能更高、处理能力更强、安全性更好,是后台开发工程师永恒的主题。 后台开发中用到的技术,深而广,需要读的“大部头”很多,光是Richard Stevens的APUE,UNP,TCP/IP详解就够读个半年以上。读者通过阅读本书,可以从实践出发,快速由浅入深地进入后台开发领域。在读完本书,有了实践的经验之后,再去阅读大师们的著作,会更有体会,更懂得如何欣赏。 读书的最高境界莫过于“把书读薄,把书读厚”。本书文字通俗易懂,让你更快地“读薄”,同时又涉及较多的核心知识点,顺着这些知识点,读着读着也发觉“读厚”了。 后勒口 徐晓鑫,腾讯资深软件研发工程师,先后在腾讯游戏之洛克王国、QQ会员、QQ秀等项目工作,精通后台开发各种技术,实战经验丰富。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值