1.对于现代计算机系统来说,用户态的最高权限是root(或Administrator),也是黑客们最渴望获取的系统最高权限。“root”对黑客的吸引,就像兔子对饿狼的吸引。
2.黑客使用的漏洞利用代码,被称为“exploit”。
? 在早期(2002年前),黑客的主要攻击目标是系统软件。一方面,是这个时期的web技术还远远不成熟;另一方面,则是因为通过攻击系统软件,黑客往往能够直接获取root权限。这段时期产生了非常多的经典漏洞以及exploit。??
??但是时代在发展,防火墙技术的兴起改变了互联网安全的格局,尤其是以 Cisco、华为等为代表的网络设备厂商,开始在网络产品中更加重视网络安全,最终改变了互联网安全的走向。防火墙、ACL 技术的兴起,使得直接暴露在互联网上的系统得到了保护。
? web攻击技术的发展可以分为几个阶段。在Web1.0时代,人们更多的是关注服务端动态脚本的安全问题,比如攻击者将一个可执行脚本(俗称webshell)上传道服务器上,从而获得权限。
??SQL 注入 (SQL Injection)的出现是 Web 安全史上的一个里程碑,它最早大概出现在 1999年,并很快就成为 Web 安全的头号大敌。 SOL 注入至今仍然是 Web 安全领域的一个重要课题。
??XSS 攻击(Cross-Site Scripting,跨站脚本攻击)的出现则是 Web 安全史上的另一个里程碑,实际上,XSS 攻击出现的时间和SQL 注入差不多,但是它真正引起人们重视大概是在 2003年以后。在经历了 MySpace 的XSS 蠕虫事件后,安全界对XSS 的重视程度提高了很多,OWASP2007 Top 10 威胁甚至把XSS 排在榜首。
? 伴随着 Web 2.0 的兴起,XSS、CSRF 等攻击已经变得更为强大。Web 攻击也从服务端转客户端,转向浏览器和用户。黑客们的攻击思路覆盖了 Web 的每一个环节,攻击形式变得更加多样化。
Web 应用变得越来越复杂,涌现出大量企业级应用标准和框架。最典型的是 Java 语言及其生态,Java 丰富的开源组件和日益复杂的技术栈,吸引了众多安全人员进行研究,漏洞挖掘和防御技术的深度都今非昔比,已经不能再用“脚本小子”来形容 Web 安全研究人员。
Web 技术发展到今天,构建出了丰富多彩的互联网。移动互联网的蓬勃发展,把 HTML5迅速引爆;云计算的快速普及,给应用的开发、部署和运维带来了全新的体验;浏览器厂商群雄逐鹿,把 Web 标准推向了新高度。与此同时,Web 安全技术也将紧跟互联网发展的脚步,不断地演化。
??从安全的角度来看,我们划分出不同重要程度的区域:通过安全检查(过滤、净化)过,可以梳理未知的人或物,使其变得可信任。被划分出来的具有不同信任级别的域,我们称为信任域;两个不同信任域之间的边界,我们称为信任边界。安全问题的本质是信任的问题,一切安全方案都是建立在信任关系上的。
?近年来安全产业界流行一个概念叫“零信任”,这是一个容易被混淆的概念。“零信任”的提出源自谷歌的内部安全团队出于安全上的考虑去除了网络边界防火墙,而将访问控制策略的粒度细化到每个员工和应用上,意为即便在公司内部,应用也默认不会信任内部的访问者,只有当访问者拥有合法的身份凭证和明确的授权时才能访问应用。“零信任”把网络访问的信任条件限制为可信的身份和明确的授权,很多时候还要求设备是可信的,所以在“零信任”中也存在信任条件。从安全设计的思想上来说,“零信任”是不存在的,如果什么都不信任,安全就无从谈起。
安全三要素是安全的基本组成元素,分别是机密性 (Confidentiality)、完整性 (Integrity) 和可用性 (Availability),简称为 CIA
机密性要求数据内容不能泄露,加密是实现机密性要求的常见手段。
完整性则要求保证数据的内容是完整、没有被篡改的。常见的保证完整性的技术手段是数字签名。
可用性要求保证资源是“随需而得”的。
这些年随着云计算、大数据和人工智能技术的进步,数据成为一种生产要素,安全方案的设计也与时俱进。其中最重要的变化趋势是“以数据为核心构建安全系统”
安全是一个持续对抗的过程,必然存在攻防两方,而在大规模网络对抗过程中,能够快速根据攻防态势的变化进行决策和行动的一方,将在对抗过程中获得优势,因此可以借用军事上的一个术语“态势感知”来描述这种攻防对抗的能力。
HTTP的全称是Hypertext transfer protocol,他是构建web应用的基础,虽然开发web应用大部分时候都不用关心http协议细节,但是如果未能正确的使用该协议,可能会带来安全隐患。HTTP协议设计的内容非常多,西面将简单介绍HTTP协议中和安全有关的知识。
方法 | 用途 |
---|---|
OPTIONS | 用于客户端向服务端询问是否支持特定的选项 |
GET | 向服务端获取URI指定的资源 |
HEAD | 和GET方法类似,但是服务端不返回实际内容 |
POST | 向服务端提交数据 |
PUT | 向指定的URL存储文件 |
DELETE | 删除URI指定的服务器上的文件 |
TRACE | 让服务器回显请求中的内容 |
CONNECT | 用户在HTTP协议中建立代理隧道 |
HTTP响应
响应中的版本号不一定要与请求中的版本号一样,但是其大版本号(Major Version)不能高于请求中的大版本号,例如请求是 HTTP/1.0 版本的,服务端响应不能为 HTTP/2 版本,但可以为HTTP/1.1版本。
状态码 | 说明 |
---|---|
100-199 | 表示已收到请求,但未完成操作,用于通知客户端 |
200-299 | 请求中的操作已成功完成 |
300-399 | 告知客户端执行额外的操作,通常用于跳转 |
400-499 | 客户端请求有错误 |
500-599 | 服务端出错 |
VMware Workstations(寄居架构)
vmware sphere(原生架构)
hyper-v(微软)
1.寄居架构
2.原生架构