web系统安全设计原则

2023-09-14 17:35:09

一、前言

        近日,针对西工大网络被攻击,国家计算机病毒应急处理中心和360公司对一款名为“二次约会”的间谍软件进行了技术分析。分析报告显示,该软件是美国国家安全局(NSA)开发的网络间谍武器。当下,我们发现对于我们发布到互联网的软件和系统的安全审查越来越严格。因为web系统天生的伴随着很多漏洞的产生,这是就给很多不法分子留下很多可乘之机。所以系统安全对于现在的业务系统来说越来越重要。

二、扫描安全系统借助的工具

拓扑分析工具:DNS Sweep、Nslookup 等  
自动化扫描工具:Nessus、AIScanner 等  
端口扫描、服务检测:Nmap、SuperScan 等  
嗅探分析工具:Ethereal、Entercap、Dsniff 等  
Exploiting 利用工具:Metasploit Framework 等  
应用缺陷分析工具:Gatling自动化渗透测试系统、SQLMAP 等  
静态分析工具:MobSF等  
动态分析工具:天问供应链分析平台等  

三、web系统安全设计原则

1、最小权限原则

应用软件的每个模块如进程、用户只能访问当下所必需的信息或者资源。赋予每一个合法动作最小的权限,以保护数据以及功能避免受到错误或者恶意行为的破坏。

2、权限分离原则

对业务的操作、管理和审计权限应该由软件中的不同角色的用户分别承担;普通用户和管理员用户信息应该存放在不同的数据表中。

3、深度防御原则

在应用程序对业务数据进行处理的每个阶段都要考虑安全性问题,不能仅在某个阶段做安全防御,这样单点防御一旦被突破将造成安全风险。

4、容错保护原则

当程序出现故障时或系统异常当系统失败时,可以进入到一个失败保护的状态。如果用户请求失败,系统仍可保障安全。

5、单点异常终止原则

当用户提交数据超出预期时,应立即终止程序的执行,不要试图加以修正并继续执行下去。

6、代码安全管理原则

严格控制第三方函数与插件的使用,对外来代码必须进行详细的安全测试。

7、代码复用原则

尽可能的重用软件已有的模块,这样可以降低引入新的漏洞和攻击界面的可能性。

8、敏感数据保护原则

对用户数据的保护功能应涵盖用户数据存储的完整性、用户数据传输保密性、数据传输的访问控制、剩余信息的保护、数据反转操作等内容;应对系统中关键数据(如用户密码等)的存储和网络传输时应采用加密保护,实用加密加密算法应该符合国际标准、国家标准和业界标准。

9、可审计原则

在应用系统中设计审计日志记录的功能,并对应用系统产生的日志增加完备的审计功能。

10、开发设计原则

开放设计与“不开放即安全”的原则相对而言,认为设计本身不应具有神秘感。这一原则的具体表现可以参见应用于加密设计的Kerchoff定律,“系统不应单纯依赖私密性,若落入敌人手中则毫无优势可言”;开放设计以提高系统兼容性和可扩展性。

11、抗抵赖原则

对于涉及支付交易等重要的业务场景,系统设计应有效地防止通信双方抵赖,如采用电子证书签名等方式。

12、符合行业规范原则

安全功能的设计尽可能的要符合国家规范、行业规范以及业界的通用标准,如等级保护等规范。

四、常见web系统漏洞

1、任意密码修改(没有旧密码验证)、密码找回漏洞、业务数据篡改等。逻辑漏洞的出现易造成账号被盗、免费购物,游戏应用易造成刷钱、刷游戏币等严重问题。条件竞争 服务端在做并发编程时,需要考虑到条件竞争的情况。

2、非法输入、失效的访问控制、失效的账户和线程管理、跨站脚本攻击、缓存溢出问题、注入式攻击、异常错误处理、不安全的存储、程序拒绝服务攻击、不安全的配置管理等。

3、SQL注入攻击是黑客对数据库进行攻击的常用手段之一。XSS跨站点脚本 XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。

更多推荐

Java基础(二十四):MySQL

文章目录一、数据库(创建、显示、删除、备份、恢复)二、MySQL常用数据类型2.1数值型(整数)2.2数值型(二进制bit)2.3数值型(小数)2.4字符型2.5日期类型三、表结构的操作四、表的增删改查4.1插入INSERT4.2修改UPDATE4.3删除DELETE4.4(单表)查询SELETE五、函数5.1排序、统

详细介绍oracle分区的使用:如何创建修改删除分区、插入数据提示分区已满或者分区不存在如何操作、近期数据使用分区历史数据不分区如何操作

一、前言什么是表分区:Oracle的分区是一种将表或索引数据分割为更小、更易管理的部分的技术。它可以提高查询性能、简化维护操作,并提供更好的数据组织和管理。表分区和表空间的区别和联系:在Oracle数据库中,表空间(Tablespace)是用于存储表、索引和其他数据库对象的逻辑存储单元。而分区(Partition)是表

blog--2建站

建站1loginorsigningithub2在github账户中创建一个项目名为你的Github用户名.github.io这是存放生成出来的网站文件的地方3在本地环境编写网站(原因开头:每次更新发布都需要修改整个网站延迟2min左右)选择hugo主题模板网站的地方https://themes.gohugo.io/打开

微服务生态系统:使用Spring Cloud构建分布式系统

文章目录什么是微服务?为什么选择SpringCloud?SpringCloud的关键组件示例:构建一个简单的微服务步骤1:创建SpringBoot项目步骤2:配置Eureka服务发现步骤3:创建REST控制器步骤4:运行项目步骤5:使用Feign进行服务间通信构建更大规模的微服务生态系统1.安全性2.监控和追踪3.熔断

企业怎么优化固定资产管理

在优化固定资产管理的过程中,不仅要关注硬件设备和设施的维护,还要重视软件系统和数据管理。一些可能的方法:需要建立一套完整的资产管理系统。这个系统应该包括资产的采购、登记、使用、维修、报废等各个环节的管理流程。通过这个系统,可以实时了解每个资产的状态,及时发现并解决潜在的问题。应该对固定资产进行定期的盘点和维护。这不仅可

PostgreSQL 排查慢 SQL

文章目录前言1.日志参数设置2.pg_stat_statements插件2.1确认是否安装插件2.2编译插件2.3载入插件2.4插件使用3.慢SQL排查手段3.1查询当前会话3.2查看TOPSQL前言所谓慢SQL是指在数据库中执行时间超过指定阈值的语句。慢查询太多,对于业务而言,是有很大风险的,可能随时都会因为某种原因

使用Git把项目上传到Gitee的详细步骤

1.到Git官网下载并安装2.到Gitee官网进行注册,然后在Gitee中新建一个远程仓库3.设置远程仓库的参数4.返回Gitee查看仓库是否生成成功5.新建一个文件夹作为你的本地仓库6.将新建好的文件夹初始化成本地仓库第一步:右键点击刚创建的本地仓库,然后点击GitBashHere第二步:在命令行里输入gitinit

八、【漏洞复现】jupyter-notebook 命令执行(CVE-2019-9644)

8.0、基础知识1、测试功能点(这种情况基本上很难遇到)8.1、漏洞原理​JupyterNotebook是一套用于创建、共享代码和说明性文本文档的开源Web应用程序。JupyterNotebook可直接使用命令行执行任意命令。​8.2、影响范围未授权开启终端权限的系统8.3、指纹识别1.有主页与明显logo主页:log

常见web漏洞原理整理

文章目录一、SQL注入1.1SQL注入漏洞原理1.2SQL注入的两个关键点1.3与Mysql注入相关的知识点1.4SQL注入的主要分类1.5SQL注入的流程1.5.1普通SQL注入1.5.2盲注1.6SQL注入总结二、文件上传2.1文件上传漏洞原理2.2客户端检测及绕过(JS检测与绕过)2.3服务端检测2.3.1后缀名

力扣常见算法题

LeetCode上的问题可以有很多不同的解题思路,具体的解法取决于问题的要求和限制条件。以下是一些常见的解题思路和Python代码示例:文章目录思路1.暴力法(BruteForce):2.哈希表(HashTable):3.双指针(TwoPointers):4.动态规划(DynamicProgramming):例题1.两

【第43篇】CLIP:从自然语言监督中学习可迁移的视觉模型

摘要最先进的计算机视觉系统被训练来预测一组固定的预定对象类别。这种受限制的监督形式限制了它们的通用性和可用性,因为需要额外的标记数据来指定任何其他视觉概念。直接从有关图像的原始文本中学习是一种很有前途的替代方案,它利用了更广泛的监督来源。我们证明了预测哪个标题与哪个图像搭配的简单预训练任务是一种有效且可扩展的方式,可以

热文推荐