WEB安全的历史
exp === exploit 漏洞利用代码

中国 黑客发展的 几个阶段 启蒙时代 ,黄金时代 ,黑暗时代
启蒙时代 -- 大致在 20世纪 19年代 中国互联网刚起步 一些青年收外国黑客技术影响 开始研究安全漏洞 大多都是个人爱好
黄金时代 -- 这个时代是以中美黑客大战为便签 黑客这个特殊的群体引起了光大人民的关注 吸引了无数的青少年走上了这题路
黑暗时代 -- 一直延续到今天 为了利息 倒卖信息 黑客间缺乏信任 再也没有了资源共享
黑客技术的发展过程
早期 目标软件系统居多 因为这个时期的web技术还没发展起来 不够成熟 另一方面通过系统软件漏洞往往能获得很高的权限 这段时期 涌现了很多经典的exploit
早期 web网站 不是 多数 还是以ftp pop3 smtp 这些服务占多数 还有攻击web网站往往获得权限非常小 没有直接攻击系统软件带劲
紧接着 以防火墙技术的兴起改变互联网的格局
最终web服务开始兴起 成为了互联网的主流

web安全的兴起
web安全 有分几个阶段
web1.0时代 关注的更多是服务器端动态脚本的安全问题
sql注入的出现 最早出现在1999年 并很快的成为web安全的头号大敌
xss(跨站脚本攻击)重要性很sql注入差不多 2003年引起注意
web2.0时代的兴起 xss csrf等攻击变得更加强大 。web攻击也从服务器端撞到了客户端 转向了浏览器和用户
同时 也新兴了很多脚本语言 如python ruby nodejs等
手机技术 ,移动互联网的兴起 也给html带来了新的机遇和挑战
安全的三要素 简称 CIA
机密性(Confidentiality) 完整性 (Integrity) 可用性 (Availability)
机密性 要求保护数据内容 不能泄露 加密的实现机密性要求的常见手段
完整性 要求保护数据内容的完整,没有被窜开。常见的保证一致性的技术手段是数字签名
可用性 要求保护资源的“随需而得”
拒绝是服务攻击 简称DOS(Denial of service)
威胁分析

在进行 威胁分析时,要尽可能地不遗漏威胁
风险分析
风险的组成:Risk = Probability * Damage Potential
影响风险高低的因素,除了造成损失的大小外 ,还需要考虑到发生的可能性
DREAD D(Damage Potentiql)R(Reproducibility)E(Exploitability)A(Affected users)D(Discoverability)

在DREAD模型中,每一个因素可以分成高中低三个等级
Secure By Default 原理
缺省安全

白名单 和 黑名单

最小权限原则
Secure By Default 另一层含义 就是“最小权限原则”
给普通用户普通权限 没必要给过高的的权限 这样普通用户窃取和管理员被窃取有很大区别的
纵深防御原则
与Secure By Default 一样,Defense in Depth(纵深防御)也试设计安全方案时的重要指导思想
纵深防御 在不同层面 不同方面施舍不同的安全方案 避免出现疏漏 不同方案之间进行相互配合 构成一个整体
也就是在正确的地方做正确的事
数据与代码分离原则
缓冲区溢出 可以认为是程序违背了这一原则的后果
程序在栈或者栈中讲用户数据当作代码执行 混淆了代码与数据的边界 从而导致安全问题的发生
根据数据与代码分离原则 在用户可操作的地方实施过滤。编码等手段 把可能造成和数据和用户输出的内容进行混淆做处理
不可预测原则 (Unpredictable)
原理 : 克服攻击方法的角度看问题
ASLR 原理 让进程中的栈基址随机变化 从而使攻击程序无法准确的判断到内存地址 大大提高了攻击的门槛 即使无法修复code 但是可以让她攻击无效
在ASLR的控制下 一个程序每次启动时,其进程的栈基址都不相同,具有一定的随机值,对于攻击者来说这就是 “不可预测性‘
安全是一门朴素的学问,也是一种平衡的艺术

WEB安全的历史的更多相关文章
- 1.2 java web的发展历史
前言 了解java web的发展历史和相关技术的演进历程,非常有助于加深对java web技术的理解和认识. 阅读目录 1.Servlet的出现 2.Jsp的出现 3.倡导了MVC思想的Servlet ...
- [转]1.2 java web的发展历史
前言 了解java web的发展历史和相关技术的演进历程,非常有助于加深对java web技术的理解和认识. 阅读目录 1.Servlet的出现 2.Jsp的出现 3.倡导了MVC思想的Servlet ...
- Erlang cowboy 入门参考之现代Web的发展历史
Erlang cowboy 入门参考之现代Web发展史 原文: http://ninenines.eu/docs/en/cowboy/1.0/guide/modern_web/ 让我回顾一下web技术 ...
- 实时Web的发展历史
传统的Web是基于HTTP的请求/响应模型的:客户端请求一个新页面,服务器将内容发送到客户端,客户端再请求另外一个页面时又要重新发送请求.后来有人提出了AJAX,AJAX使得页面的体验更加“动态”,可 ...
- Web开发技术发展历史
Web开发技术发展历史 来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互 ...
- 【转载】Web开发技术发展历史-版本1
原文在这里. Web开发技术发展历史 Web的诞生 提到Web,不得不提一个词就是“互联网”.Web是World Wide Web的简称,中文译为万维网.“万维网”和我们经常说的“互联网”是两个联系极 ...
- 【转】同形的JavaScript:Web应用的未来
原文转自:http://blog.jobbole.com/51786/ 在Airbnb,这几年我们已经学习了很多了关于构建富应用的经验,从2011年通过做我们的网站手机版,我们开始研究single-p ...
- web之困:现代web应用安全指南
<web之困:现代web应用安全指南>在web安全领域有“圣经”的美誉,在世界范围内被安全工作者和web从业人员广为称道,由来自google chrome浏览器团队的世界顶级黑客.国际一流 ...
- cct,web技术
基本信息 全国计算机等级考试二级教程——Web程序设计(2016年版)作 者:教育部考试中心 编出 版 社:高等教育出版社出版时间:20115-12-1 ISBN:9787040442991版 ...
随机推荐
- SpringBootSecurity学习(15)前后端分离版之 OAuth2.0简单示例
OAuth2.0 OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者.客户端来申请资源,资源所有者同意以后,资源服务器可以向客户端颁发令牌.客户端通过令牌,去请求数据.也就是说, ...
- [Abp vNext 源码分析] - 9. 接口参数的验证
一.简要说明 ABP vNext 当中的审计模块早在 依赖注入与拦截器一文中有所提及,但没有详细的对其进行分析. 审计模块是 ABP vNext 框架的一个基本组件,它能够提供一些实用日志记录.不过这 ...
- PHP5.5 mysqli如何连接MySQL数据库和读取数据
在学习 1. 开启PHP的API支持 (1)首先修改您的php.ini的配置文件.查找下面的语句:;extension=php_mysqli.dll将其修改为:extension=php_mysqli ...
- python——成语接龙小游戏
小试牛刀的简易成语接龙. 思路—— 1.网上下载成语字典的txt版本 2.通过python进行处理得到格式化的成语,并整理成字典(python字典查找速度快) 3.python程序,查找 用户输入的最 ...
- ARP攻击原理简析及防御措施
0x1 简介 网络欺骗攻击作为一种非常专业化的攻击手段,给网络安全管理者,带来严峻的考验.网络安全的战场已经从互联网蔓延到用户内部的网络, 特别是局域网.目前利用ARP欺骗的木马病毒在局域网中广泛传 ...
- postgres 数据库 citus 集群分片
前言 什么时候需要考虑做数据切分? 1.能不切分尽量不要切分 并不是所有表都需要进行切分,主要还是看数据的增长速度.切分后会在某种程度上提升业务的复杂度,数据库除了承载数据的存储和查询外,协助业务更好 ...
- ASP.NET Core API ——Dapper的使用
ASP.NET Core API ——Dapper的使用 简介:Dapper是一个ORM框架,负责数据库和程序语言之间的映射. 使用步骤: l 创建一个IDBConnection的接口对象 l 编 ...
- Python3_基础
目录 数据类型 变量 数据类型的转换 算术操作符 输入 字符串常用方法 数据类型 我们先来看看三种常见的数据类型 字符串 str 在Python中,字符串一般都用引号引起来,不管是用单引号还是双引号都 ...
- Redis分布式篇
Redis分布式篇 1 为什么 需要 Redis 集群 1.1 为什么需要集群? 1.1.1 性能 Redis 本身的 QPS 已经很高了,但是如果在一些并发量非常高的情况下,性能还是会受到影响. ...
- call,apply和bind详解
一.call和apply call和apply其实是同一个东西,区别只有参数不同,call是apply的语法糖,所以就放在一起说了,这两个方法都是定义在函数对象的原型上的(Function.proto ...