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

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

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

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

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

我们按这样的顺序讨论 :

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

  2. 网络安全

  3. 环境安全

  4. 系统安全

  5. 其他

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

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

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

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

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

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

网络安全

首先是网络安全。

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

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

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

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

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

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

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

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

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

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

环境安全 

接下来是环境安全。

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

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

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

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

系统安全

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

其他

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

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

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

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

总结

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

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

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

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

  1. 推荐一篇北师大本科生的论文:高并发高流量网站架构

    原文及作者网站地址:http://www.fulin.org 这篇论文出自一名叫唐福林的北师大的目前在读本科生. 他的这篇论文的确非常的优秀. 通过他的简历也能够确定他始终都是一名相当优秀的学生,同时 ...

  2. 高并发高流量网站架构[转]

    2019独角兽企业重金招聘Python工程师标准>>> Web2.0的兴起,掀起了互联网新一轮的网络创业大潮.以用户为导向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一 ...

  3. 网站架构设计参考(图文)

    转载请注明出处:http://blog.csdn.net/anxpp/article/details/51614973,谢谢! 1.概述 本人并未经历过一个网站从小到大的演化过程(这种机会本来就太小, ...

  4. 网站架构(从小型网站到大型网站的架构变化)

    出处:http://blog.csdn.net/anxpp/article/details/51614973 大型网站架构演化过程 1.初始阶段的网站架构网站一开始,使用的人并不多,访问量比较小,使用 ...

  5. UI设计师缺乏灵感,看看这些可以临摹的网站架构!

    首先,它需要一个坚实的基础,然后是能够承载所有内容的框架,做好后要好好装饰一下.同样的思维模式可以套用在网站的设计上. 网站架构 网站架构 更重要的是,你并不需要为此创造出过去从未在框架中出现过的东西 ...

  6. 基于ASP.NET网站流量统计系统的设计与实现

    在这个网络急速发展的时代,网站在日常生活中是必不可少的,网站所产生的付出回报率相对应的就显得尤为重要,一个强大.方便的网络流量统计管理系统能使网站的使用变得更加方便快捷.当前国内在这个方面的研究做的比 ...

  7. mysql ip鉴权_网站登录鉴权的实现

    什么是网站鉴权,目的是什么? 一般来说,一个网站不可能只有一种操作权限.举个例子,可能存在未登录的操作权限,登录的操作权限,以及管理 员的操作权限等.网站鉴权的目的就是用户在进行操作前,对用户的身份进 ...

  8. 亿级流量网站架构核心技术_关于大型网站系统架构你不得不懂的10个问题

    来自:JavaGuide(微信号:JavaGuide) 下面这些问题都是一线大厂的真实面试问题,不论是对你面试还是说拓宽知识面应该都很有帮助.之前发过一篇8 张图读懂大型网站技术架构 可以作为不太了解 ...

  9. 亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统

    亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统 1.高并发原则 1.1 无状态 1.2 拆分 1.3 服务化 1.4 消息队列 1.5 数据异构 1.6 缓存银弹 1.7 并发化 2 高可用原 ...

最新文章

  1. linux 新建用户_使用Xshell和Xftp连接管理Linux服务器
  2. nmcli命令详解_【高新课堂】第一百二十五期Liunx必备命令
  3. UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 46: ordinal
  4. python——rang函数、for、braek循环
  5. FCKeditor插件开发
  6. 搭建Windows SVN服务器及TortoiseSVN使用帮助和下载
  7. 11.微信小程序图片操作总结
  8. 鸿蒙系统可以上外网吗,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可 !【手机吧】_百度贴吧...
  9. 沐阳从0到1零基础学习安卓逆向
  10. Oracle无法标识锁定数据文件,启动错误ORA-01157: 无法标识/锁定数据文件 解决方案...
  11. 20.docker cp从容器里面拷文件到宿主机或从宿主机拷文件到docker容器里面
  12. PHPMyWind5.4存储XSS(CVE-2017-12984)
  13. python用matplotlib画折线图
  14. Win10系统搜不到airpods?
  15. rosbag 数据分割
  16. java商城系统源码谁有,b2b2c或b2c的,类似iskyshop,legendshop,shop
  17. 无线网卡WLAN驱动无法启动(错误代码10)拯救指南
  18. 关于android Window Leaked异常的解决方法
  19. 按层次遍历二叉树算法
  20. 第21关 计算自然数的和

热门文章

  1. lumia535 刷Android,IT之家学院:给Lumia 520/521/525/526/720刷Android系统
  2. 【Three.js】shader特效之能量盾
  3. matlab如何实现横轴坐标的放缩
  4. 基于查表法的电动汽车用永磁同步电机电驱驱动控制MATLAB仿真模型
  5. mysql去重的几种方式
  6. 贺岁片遭遇“疯狂的水军”
  7. Truffle Web3.js -开发、部署第一个去中心化应用(Dapp) - 宠物商店
  8. word2007 在左侧显示目录
  9. 如何在opencv中添加滑块
  10. 中国丁腈手套市场研究与未来预测报告(2021版)