mylamour / blog

Your internal mediocrity is the moment when you lost the faith of being excellent. Just do it.
https://fz.cool
61 stars 14 forks source link

如何进行安全设计评审 #41

Open mylamour opened 5 years ago

mylamour commented 5 years ago

:triangular_flag_on_post:记录昨天安全设计评审的过程,当然这也是第一次进行安全评审。因此做一个总结。安全设计评审应该是SDL落地安全人员参与过程中首当其冲的地方。仅指安全人员自身的功用。如果按照SDL流程来讲,最前期应该是进行安全培训。我们可以看两个微软SDL官方给出的流程图。 image

image

那么在安全设计评审这一阶段,应该怎么去做。我们可以先看下唯品会的SDL中在落地安全设计这一块怎么做的。

image

就我自身而言。是按照以下这个流程进行的。

看着一大堆乱七八糟,自上而下的流程,但是做起来其实很快的。此处默认安全人员熟悉各种基本的开发过程中的安全规范以及一些Checklist(必须要了解公司开发语言对应的安全开发规范),举例: web安全开发规范,Python安全编码规范,Flask安全, Django安全,常用的安全配置,面临哪些攻击点等等。 ps: 明确逻辑是非常重要的,可以说最为重要,如果连逻辑都不明白,谈什么设计评审。

一些比较基础的:

下面以C2C平台交易部分为例进行说明,可以简单的想一下,在智联买一张火车票,打开了支付宝进行支付。: image

然后,你知道数字签名当然是很基础的部分了。那么接下来,你就要细化支付流程过程中出现哪些操作,针对这些操作需要做什么样的防护措施。下图是针对用户商户支付方之间的流程:

image

原文件在此(0.1版本),使用draw.io绘制 针对每个输入点,自身可控的输入输出的地方,进行过滤,校验等操作。

所以那么问题来了,如果只单单是用户和支付方之间的呢? image

你也可以思考一下如何进行:musical_keyboard:

并且在OWASP应用安全设计中,详细指出了其他一些问题(中文版 Version 1.0 5):

下图(来自OWASP官方文档)详列上述条目以及其他需要检查的地方。 image image

但是其实并不需要按照上述所有清单做自检,或者说是当你和开发团队在讨论的过程中不需要涉及全部的checklist,可能只需要在架构上,设计上进行检验,以及身份验证和数据检验上。当然,都是需要根据自己的业务场景去实现,因地制宜。

Resources