当前位置:网站首页>【软件工程之美 - 专栏笔记】34 | 账号密码泄露成灾,应该怎样预防?
【软件工程之美 - 专栏笔记】34 | 账号密码泄露成灾,应该怎样预防?
2022-08-02 00:16:00 【if...else...】
专栏信息
专栏作者:宝玉
专栏发布平台:极客时间
主要内容
今天,我将带你了解一下软件开发中的安全问题,学习如何构建安全的软件,以及出现了安全问题之后该怎么办。
一、安全问题本质是技术风险
安全问题,本质上也是一种技术风险,没发生问题的时候一切都好,一旦发生就会有严重的影响。
软件中的安全问题来源主要可以分为以下三大类。
第一类:恶意输入
SQL 注入、XSS 攻击等
这类问题都是由于恶意输入导致的,应对恶意输入的问题,最简单有效的方式就是对用户输入的数据,做严格的校验,格式化。
第二类:假冒身份
很多程序对于用户身份的校验比较弱,可能会导致黑客假冒用户身份做出超越权限的事情。
如果对用户的身份不做严格的验证,很可能就会导致假冒身份的安全问题。应对策略就是要对用户的身份做验证,尤其是涉及敏感权限的操作,甚至要做两重验证。
第三类:数据泄露
很多软件都储存了用户的敏感信息,比如用户帐号密码信用卡记录,或者服务器的敏感信息,比如数据库连接字符串、登录帐号密码,而这些数据是有被泄露风险的。
二、如何预防软件中的安全问题?
预防软件中的安全问题,也可以参考对风险管理的策略。在风险管理中,对风险识别和量化后,接下来就是要制定应对计划了。
那么在软件开发的各个阶段,都需要如何考虑好安全方面的问题呢?
需求阶段
需求是软件项目的源头,在确定需求,做产品设计的时候,不仅要考虑到功能上的需求,还要同时考虑到安全方面的要求。这样当你在架构设计的时候,就不会轻易遗漏安全方面的架构设计。
当你在需求阶段就提出了安全性的需求,设计、实现和测试时自然不会遗漏掉安全方面的内容,从源头上就让大家有了安全方面的意识。
设计阶段
在做设计架构时,最重要的事就是要把安全加入到设计目标,有了安全方面的设计目标,自然能找到很多安全相关的解决方案。
现在架构设计领域,也有了一些业界公认的好的安全相关的设计原则,比如说攻击面最小化、权限最小化、纵深防御等。
开发阶段
只是设计阶段做好安全相关的设计还不好,很多安全问题其实都是编码阶段时,没有好的编码习惯、没有良好的安全意识导致的。
对于开发阶段的安全问题预防,需要从以下几个方面入手。
- 编码规范中加入安全相关内容
- 要有代码审查
- 增加安全相关的自动化测试
测试阶段
在测试阶段,除了功能测试以外,增加对安全性方面的测试。
上线维护
上线部署时,不部署源代码,只对编译后程序部署;删除 Debug 文件。
三、如果真的出现安全问题怎么办?
安全问题就像程序的 Bug 一样,没有谁能保证绝对的安全,就像风险管理的最后一步风险监控那样,我们必须做好 Plan B,万一出现安全问题,马上应对,将损失降到最低。
- 首先,要设立应急的流程。
- 其次,要分析程序的漏洞在哪里。
- 最后,要总结原因。
四、其他摘抄
- 我见过有的网站,把后台入口隐藏起来,而没有做权限控制,导致黑客猜到地址后就可以进入后台操作。
- 还有的游戏后台不做验证,直接接收传入的数据,导致可以伪造游戏用户发送数据,破坏游戏平衡。
- 我们不能假设数据存储是安全的,而是要考虑到数据是有泄露的可能,提前做好预防措施,对敏感数据进行加密。
总结
软件的安全问题本质也是一种技术风险,可以借用风险管理的知识来帮助构建高安全性的软件。
安全问题就像程序的 Bug 一样,不能绝对避免,同时也要做好应对措施,在出现安全问题后,将损失降到最低,并且避免以后发生类似问题。课后思考
边栏推荐
猜你喜欢
Double queue implementation stack?Dual stack implementation queue?
面试:简单介绍你参与的一个项目
nodeJs--mime module
测试点等同于测试用例吗
攻防世界-web-Training-WWW-Robots
08-SDRAM: Summary
已知中序遍历数组和先序遍历数组,返回后序遗历数组
String splitting function strtok exercise
go笔记——锁
实现删除-一个字符串中的指定字母,如:字符串“abcd”,删除其中的”a”字母,剩余”bcd”,也可以传递多个需要删除的字符,传递”ab”也可以做到删除”ab”,剩余”cd”。
随机推荐
第 45 届ICPC亚洲区域赛(上海)G-Fibonacci
Are test points the same as test cases?
严格模式,use strict
22.卷积神经网络实战-Lenet5
go笔记之——goroutine
GIF making - very simple one-click animation tool
C语言实现扫雷游戏
[21-Day Learning Challenge] A small summary of sequential search and binary search
Redis 相关问题
Multidimensional Correlation Time Series Modeling Method Based on Screening Partial Least Squares Regression of Correlation Variables
Routing strategy
Stapler:1 靶机渗透测试-Vulnhub(STAPLER: 1)
管理基础知识19
NodeJs, all kinds of path
String splitting function strtok exercise
Redis-消息发布订阅
渗透测试与攻防对抗——渗透测试基础
Kunpeng compile and debug plug-in actual combat
JS中localStorage和sessionStorage
磁盘与文件系统管理