一、前言
近日,针对西工大网络被攻击,国家计算机病毒应急处理中心和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用户将代码植入到提供给其它用户使用的页面中。