一、安全概述:电子交易系统面临的威胁、安全防护的三大目标(CIA)、安全防护体系架构
各位同学,咱们今天聊点实在的。
电子交易系统,说白了就是钱在数字世界里流动的管道。你想想看,一条输油管要是被人钻个孔,后果是什么?交易系统也一样。我做了十几年安全架构,见过太多“我以为没事”最后出大事的案例。今天咱们就把这摊子事掰开揉碎了讲清楚。
1.1 电子交易系统面临的威胁
威胁这东西,不是凭空吓唬人。我把它分成三类,你对照着看看自己的系统,心里就有数了。
核心观点:威胁不是单一维度的,攻击者往往组合使用多种手段。防御必须立体化。
1.1.1 外部攻击
- DDoS攻击:把服务器流量打满,让你正常用户进不来。我在项目中遇到过,双十一当天被打了,那叫一个酸爽。
- SQL注入:通过输入框把恶意SQL塞进数据库。嗯,这里要注意,很多老系统还在用拼接SQL的方式,这是定时炸弹。
- 中间人攻击:通信链路被截获,数据被篡改。说白了就是你在网上买东西,有人偷偷改了你的收货地址和金额。
- 撞库攻击:用其他平台泄露的账号密码来试你的系统。你以为用户密码设得简单是用户的问题?不,这是你的问题。
1.1.2 内部威胁
- 权限滥用:内部员工越权操作。我曾经见过一个运维,闲着没事查了CEO的账户余额。
- 数据泄露:敏感信息被内部人员拷贝出去。这不是技术问题,是管理问题。
- 误操作:删库跑路虽然是段子,但误删生产数据的事,我每年都能听说几起。
1.1.3 业务逻辑漏洞
- 重放攻击:把同一个请求发两次,系统没做幂等性校验,钱就扣了两次。
- 越权操作:普通用户通过修改URL参数,看到了别人的订单。
- 条件竞争:两个请求同时操作同一个资源,导致数据不一致。这玩意儿最难排查,我调过三天三夜才找到根因。
1.2 安全防护的三大目标(CIA)
做安全的,CIA这三个字母你得刻在脑子里。不是美国那个CIA,是机密性、完整性、可用性。
| 目标 | 英文 | 通俗理解 | 我踩过的坑 |
|---|---|---|---|
| 机密性 | Confidentiality | 不该看的人看不到 | 有一次日志里明文打印了用户密码,吓得我连夜改配置 |
| 完整性 | Integrity | 数据没被篡改过 | 支付金额在传输过程中被改了一分钱,对账对到崩溃 |
| 可用性 | Availability | 该用的时候能用 | 服务器挂了,老板问为什么不能交易,我说被打了,他说那你为什么没防住 |
个人经验:这三个目标不是选择题,是必答题。你可以在不同场景下有所侧重,但不能放弃任何一个。比如交易核心链路,三个都要做到99.99%以上。
1.3 安全防护体系架构
架构这东西,我习惯用分层的方式去思考。你想想看,一个交易系统从用户点击到数据库落盘,中间经过了多少层?每一层都有风险,每一层都要防。
下面这张图是我自己画的,把整个安全防护体系串起来了。你看一眼,心里就有谱了。
注意:这张图不是摆设。我建议你把它打印出来贴在工位上。每次做架构评审的时候,对照着看每一层有没有漏掉。我曾经因为忽略了应用安全层的输入校验,导致一个XSS漏洞上线了三个月才发现。
1.3.1 纵深防御思想
说白了就是别把所有鸡蛋放在一个篮子里。WAF挡不住的攻击,应用层还能拦一道;应用层漏掉的,业务层还能兜底。每一层都设防,攻击者就得一层层突破,成本高到他不愿意干。
1.3.2 最小权限原则
我见过太多系统,一个普通员工的账号能查全库。你想想看,这合理吗?每个角色只给够用的权限,多一个都不要给。我曾经帮一家公司做安全审计,发现前台收银员的账号居然能删订单表,这不出事才怪。
1.3.3 安全左移
别等到上线了才考虑安全。需求阶段、设计阶段就把安全加进去。改一行代码的成本,比上线后打补丁低十倍不止。我个人的习惯是,每个需求评审都带安全视角,问一句“这个功能如果被恶意利用会怎样?”
避坑指南:我曾经接手过一个项目,安全是最后才加的,结果发现核心交易逻辑跟安全方案冲突,不得不重构。那叫一个痛苦。所以,安全一定要前置,前置,再前置。
好了,这一章的内容就这些。记住三个关键词:威胁、CIA、分层防御。下一章咱们聊具体的加密技术,那个更有意思。