【网站架构】网站系统怎么才是安全的?安全验收?等保、网络安全、SQL盲注、https、鉴权

大家好,欢迎来到停止重构的频道。

本期我们讨论网站系统的安全性

安全的重要性不言而喻,大部分安全问题确实是安全扫描后根据指引修改就可以了。

但是仍有一些问题修改起来是特别麻烦的,这些问题会严重影响上线时间。

本期我们的重点不在于罗列所有的安全问题,而是重点讨论哪些安全问题必须在开发阶段就解决的,让项目上线或交付更加顺滑。

我们按这样的顺序讨论 :

  1. 网站系统怎么才算是安全的 

  2. 网络安全

  3. 环境安全 

  4. 系统安全 

  5. 其他

网站系统怎么才算是安全的 

网站系统怎么才算是安全的,有很多提供安全测试服务的公司,它们会做渗透测试、安全扫描等工作,并出具安全评分报告。

只要评分及格,就算是安全的。

当然,这些安全报告会有各自的标准,但国内项目的话,一般采用等保(信息安全等级保护)的标准。

一般达到三级或以上要求就可以了,很多项目也是以等保三级作为安全性的验收标准,如果对安全测试没有概念的小伙伴,可以看一下等保三级的提纲。

安全问题虽然很庞杂,但实际上也就是网络、环境、系统这三大类。

网络安全

首先是网络安全。

一般大型网站都需要做网络区域隔离,为了防止攻击者直接操控服务器。

需要把系统应用、数据都放在不通公网的隔离区。

请求都需要通过统一的网关程序才能反向代理进网络隔离区。

对于系统调用公网第三方服务的问题,则需要额外增加对外代理作为调用总出口

 对外代理的话,可以使用Nginx的四层代理,一个端口对应一个第三方服务,虽然七层代理可以一个端口对应所有的https请求,但是实际应用下来不太稳定。

网络安全另外一个比较重要的点是https。

对于https,其实并不复杂,不需要整个网站的各个服务都换成https,只需要保证网关那一层配置https即可,系统内部的调用仍然使用http。

当然其他网络安全问题也十分重要,如调用白名单等,但总的来说就是一开始是限制网络调用的,根据功能的扩展,逐步增加网络策略即可。

网络安全的相关问题会一定程度上阻碍发布、调试难度,所以一般只对生产环境部署就可以了。

但是这一套网络环境的部署最好在项目初期就考虑搭建,因为项目后期再弄的话可能来不及,毕竟实际问题会很多。

环境安全 

接下来是环境安全。

环境安全指的是操作系统、基础软件的安全,如系统版本、系统漏洞修复、基础软件漏洞修复、密码安全等。

当然,大部分的环境安全问题根据安全扫描结果整改就可以了。

但是有一点是需要关注的,对于基础软件版本,如MySQL等。最好在一开始调研清楚将要使用的软件版本有没有安全问题,或者该版本是否允许使用,不要等到被安全扫描的时候才发现该版本不能使用。

虽然基础软件的升降级是很简单的,但是版本之间的功能是存在差别的,那么就可能存在基础软件升降级后一些业务功能不可用的情况,而重新测试会浪费很多成本

系统安全

最后是系统安全,系统安全是我们开发的软件的安全问题

这些问题一般都需要在开发阶段就处理好的,不然这些问题的整改可能是灾难性的

系统安全比较重点的问题有几点:一是接口权限;二是SQL盲注;三是敏感信息加密;四是日志

接口鉴权是比较容易忽略的,比如用户登录检查、用户角色权限检查等。

其中需要特别说明的是,如果涉及到用户id、用户权限、用户信息的参数,最好是通过session信息强制获取覆盖,不然鉴权会沦为摆设。

接口鉴权不要想着后面再追加,在开发的时候就需要做好

因为后期对几百几千个接口一次性加追加权限的话,是一个特别蠢的事情,对于接口权限问题,我们会在后续的《单点登录系统架构设计》中详细讨论。

另外是SQL盲注,SQL盲注一般采用MyBatis等数据库操作框架就能解决的

SQL盲注的基础原理是通过传入单引号(‘)扩展既定的SQL语句,以实现获取或修改原定功能以外信息,

比如:检查账号密码的SQL语句是这样的,如果没有防止SQL盲注,当用户在密码中输入带单引号的字符串,则可以绕过密码校验。

三是敏感信息加密,一些敏感信息是需要加密的,如密码、某些身份信息等。

这些信息在数据库中存储的是加密后的信息,为了防止即使数据泄漏,不知道具体加密/解密算法的话,这些数据也没有意义。

四是日志,日志在很多问题上我们都是重点提及的,因为日志确实非常重要。

在开发调试时,可以初步定位问题,在运营问题上,也可以判断是否发生过用户所描述的操作,在本期的安全问题上,就可以通过日志分析信息盗取、篡改的手段。

关于日志的详细规则,可以参考往期《后端规整化》。

其他

除了以上提到的安全点,可能还需要考虑一些防止洪水攻击、熔断等安全机制,但其实这些问题基本上接入安全堡垒机WAF就可以解决了。

安全堡垒机的作用是监控请求,如果是非法请求,则拦截,至于非法请求的界定策略,一般是可以配置的。

如果条件允许的话,安全堡垒机的接入最好不要等到上线前再接入

因为安全堡垒机可能会对某个业务请求误判,这些接口都需要进行特殊处理的,如果在开发阶段就发现的话,则不会在上线前临时多处很多问题。

总结

以上提到的安全问题只是较为通用的问题,根据具体的业务系统,可能会有特殊的安全问题,如直播平台会有直播流防盗等问题,这些问题最好也在开发阶段考虑。

安全性是网站系统整体架构的最后一个问题,截止到本期,我们已经把大型网站架构的所有关键问题都已经讨论完毕。

接下来,我们会介绍一些具体系统的架构设计过程,部分产品也会同步推出,敬请期待。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值