真的,Web安全入门看这个就够了

第一章 我的世界安全观


1.1 Web安全简史

在Web发展初期由于对安全问题认知认识不足,导致发生过许多的安全问题,且遗留下许多历史问题:如PHP语言至今只能依靠较好的代码规范来防范文件包含漏洞,而无法从语言本身来杜绝此类安全问题的发生。常见的安全漏洞:SQL注入、XSS攻击、CSRF。

1.2 黑帽子,白帽子

白帽子是指那些精通安全技术,工作在反黑客领域的专家们,他们的工作出发点是解决所有的安全问题,所以他们看待问题的方面更加全面、宏观。黑帽子是指使用黑客技术对网络进行破坏、甚至是进行犯罪的群体,他们的主要目的是入侵系统,找到对他们有效的数据,因此他们只需要以点为突破,找到对他们最有利的一点进行渗透,所以他们思考问题的方向是有选择性的、微观的。

1.3 返璞归真,揭秘安全的本质

通过一个安全检查的过程,梳理未知的人或物,将其划分为不同的信任级别的区域,两个不同信任域之间的边界叫做信任边界。

安全问题的本质是信任问题。安全方案的设计基础是建立在信任关系之上的,例如保管文件的“锁”,你得确保锁的工匠是信任的,他没有私自保管一把额外的钥匙;抽屉的工匠失是信任的,他没有给抽屉安装后门;钥匙也需要保管在一个安全不会出现问题的地方。

1.5 安全三要素

机密性

保护数据内容不会泄露,加密是完成机密性的常见手段。

完整性

要求保护数据内容是完整的、没有被篡改的。常见的保证一致性的手段是数字签名。

可用性

保护资源“随需而得。例如:防范DOS攻击。

他们在安全领域还可以扩充增加可审计性、不可抵赖性等,但最重要、最基本的还是机密性、完整性、可用性。

Web安全入门笔记,需要的小伙伴可以自取!

1.6 如何实施安全评估

资产等级划分

明确工作的目标是什么,要保护什么。互联网的核心问题是数据安全的问题,对互联网公司的资产进行等级划分就是对数据做等级划分。有的公司关心客户数据,有的公司关心员工资料信息,所以根据公司的业务的不同,对其进行的侧重点也不同。

威胁分析(威胁建模STRIDE模型)
Spoofing(伪装)

冒充他人身份

Tampering(篡改)

修改数据或代码

Repudiation(抵赖)

否认做过的事

InformationDisclosure(信息泄露)

机密信息泄露

Denial of Service(拒绝服务)

拒绝服务

Elevation of Privilege(提升权限)

未经授权获得许可

风险分析

请在此添加图片描述

根据风险因素所对应的权重进行相加算出权值将12-15分之间的定义为高威胁。将8-11分之间的定义为中威胁。将0-7分之间的定义为低威胁。

设计安全方案

针对资产等级划分、威胁分析、风险分析阶段评估出一个合适的解决方案。

1.7 白帽子兵法

Secure By Default 原则

制定黑名单、白名单。白名单相较于黑名单来说更安全,但白名单并不是完全安全的,因为安全建立与信任,白名单中若出现不安全的名单那么信任列表将会变得不可信。

最小权限原则授予主体必要的权限,不要过度授权,这样能有效的减少系统、网络、应用、数据库出错的机会。

纵深防御原则

从不同层面、不同角度对系统做出整体的解决方案,而不是一个安全方案做两遍或者是多遍(木桶理论)。

在正确的地方做正确的事,防止造成”乌龙“(例如XSS过滤关键字可能会过滤“1<2”->”1 2“.

数据与代码分离(数据就是数据,不能被执行为代码)
不可预测性–>加密算法、随机数、哈希(随机数,比如抓取页面id=随机数,防止csrf的随机数token)

第二篇 客户端脚本安全


第二章 浏览器安全


2.1 同源策略

同源策略限制了来自不同源(origin)的文档和脚本。这一策略极其重要,如果没有同源策略,可能a.com的一段JS脚本,在b.com未曾加载此脚本时,也可以随意修改b.com的页面(在浏览器显示中)。为了不发生混乱,浏览器提出“Origin”(源)的概念。来自不同Origin的对象无法相互干扰。

请在此添加图片描述

从上表可以看出,影响”源”的因素有:

1.host(域名或IP地址)
2.子域名
3.端口
4.协议

需要注意的是,对于当前页面来说,页面内存放JS文件的域并不重要,重要的是加载JS的页面所在的域是什么。举例说明:

a.com通过代码<script src=http://b.com/b.js ></script>加载了b.com上的b.js。因为b.js是运行在a.com上的,所以b.js的域就是a.com。

在浏览器中,<script> <img> <iframe> <link>等标签都可以跨域加载资源,而不受同源策略的限制。这些带”src”属性的标签每次加载时,实际上是由浏览器发起了一次GET请求。不同于XMLHttpRequest的是,通过src属性加载的资源,浏览器限制了JS的权限,使其不能读,写返回的内容。对于XMLHttpRequest,它收到同源策略的约束,不能跨域访问资源,在AJAX应用的开发中尤其需要注意到这一点。

2.2 浏览器沙盒

Sandbox 即沙箱,计算机技术发展到今天,Sandbox已经成为泛指“资源隔离类模块”的代名词。Sandbox的设计目的一般是为了让不可信任的代码运行在一定的环境中,限制不可信任的代码访问隔离区之外的资源。如果一定要跨越Sandbox边界产生数据交换,则只能通过指定的数据通道,比如经过封装的API来完成,在这些API中会严格检查请求的合法性。

2.4 高速发展的浏览器安全

浏览器对地址的解析便利可能会被黑客所利用,可以通过这些绕过一些安全模块或者是安全软件。如(“xxx.xxx.com\abc”->“xxx.xxx.com/abc”)


第三章 跨站脚本攻击


3.1 简介

反射型XSS

反射型XSS只是简单地把用户输入的数据“反射”给浏览器。也就是说,黑客往往需要诱使用户“点击”一个恶意链接,才能攻击成功。反射型XSS也叫做“非持久型XSS”

存储型XSS

存储型XSS会把用户输入的数据“存储”在服务器端。这种XSS具有很强的稳定性。比如博客网站若被写下了包含有恶意JavaScript代码,后面每个访问这个博客的用户都会执行一遍这个代码。

DOM型XSS

通过修改页面的DOM节点形成的XSS

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值