第一节 课程介绍
1.安全定义
私密性:不被非法获取和利用 可靠性:不丢失不损坏不被篡改
2.Web安全定义
代码层面、架构层面、运维层面的安全
3.安全问题的危害
用户身份被盗用、用户密码泄露、用户资料被盗取、网站数据库泄露
4.Web安全的重要性
直面用户,挑战严峻、网站和用户安全是生命线、安全事故威胁企业生产、口碑甚至生存
5.课程安排
跨站脚本***XSS、跨站请求伪造***CSRF、前端Cookies安全性、点击劫持***、传输过程安全问题、用户密码安全问题、SQL注入***、信息泄露和社会工程学、其它安全问题
6.能学到什么
了解安全问题的原因、避免开发出带漏洞的代码、如何开发安全的Web项目
7.预备知识
原生Javascript、少量Node.js基础、HTTP基础知识(含Cookies/Session)
二、环境搭建(略)
三、前端XSS
1.XSS定义
跨站脚本***(Cross Site Scripting):一种针对网站应用程序安全漏洞进行***的技术,恶意用户将恶意代码注入网页,普通用户在浏览网页时就会受到影响。进而获取页面数据、窃取用户资料(会话、cookie)等。
2.XSS***分类
反射型、存储型、DOM型
反射型:主要是通过在url链接中,插入***脚本实现***,如:http://xxxx/index.php?id=alert('1')
存储型: 常见于发帖及留言板当中,主要通过将恶意代码注入帖子中,帖子被后台服务器下载存储下来,当用户浏览这个帖子时,恶意代码就被触发了
DOM型:通过JS对HTML DOM节点的属性和方法等进行恶意代码的注入,当普通用户的浏览器进行处理时,就会触发
3.XSS危害
获取用户cookie等信息、获取网站数据等
4.XSS防御
对数据进行转义(如:>、<、'、")、HTML白名单机制、第三方库、CSP策略
四、前端CSRF
1.CSRF定义
跨站请求伪造(Cross Site Request Forgy):攻*击者利用普通用户的身份,以普通用户的名义向目标网站发起某些非法操作(前提:1.普通用户已访问目标网站,目标网站返回cookie等信息 2.普通用户访问了攻*击者的链接)
2.CSRF危害
在用户不知情的情况下,获取用户登录信息、盗取用户资金、损坏平台声誉
3.CSRF防御
禁止第三方网站带cookie(禁止referer为其它网站的请求)、same-site属性、 请求附加验证码或token等
五、前端Cookies特性
1.Cookies特性
前端数据存储、后端通过http头设置、请求时通过http头传给后端、前端可读写、遵守同源策略、域名、有效期、路径、http-only、secure
2.Cookies作用
存储个性化设置、存储未登录时用户唯一标识、存储已登录用户的凭证、存储其它业务数据
3.Cookies-登录用户凭证
前端提交用户名和密码、后端验证用户名和密码、后端通过http头设置用户凭证、后续访问时后端先验证用户凭证
形式:用户ID、用户ID+签名、SessionId
4.Cookeis和XSS、CSRF的关系
XSS可能偷取Cookies、http-only的cookies不会被js获取
CSRF利用了用户的Cookies、攻*击者站点无法读写Cookies、最好能阻止第三方使用Cookies
5.Cookes安全策略
签名防篡改、私有变换(加密)、http-only(防止XSS)、secure(https)、same-site
六、前端点击劫持
1.点击劫持定义
click-jacking,也被称为UI-覆盖攻*击,是指攻*击者将内嵌框架透明化,普通用户以为点击了所看到的页面,实则点击了攻*击者注入了恶意代码的页面
2.点击劫持防御
JavaScript禁止内嵌、X-FRAME-OPTIONS禁止内嵌、其他辅助手段
七、传输安全
1.HTTP传输原理
浏览器--代理服务器--链路--服务器
传输链路窃听篡改
2.HTTP窃听、篡改危害
HTTP窃听:窃听用户密码、窃听传输敏感信息、非法获取个人资料
HTTP篡改:插入广告、重定向网站、无法防御的XSS和CSRF攻*击
3.HTTPS传输原理
浏览器--代理服务器--链路--服务器 浏览器---中间人攻*击---服务器
SSL加密 加密(CA) 加密(CA)
八、密码安全
1.密码泄露渠道
数据库被偷、服务器被***、通讯被窃听、内部人员泄露数据、其他网站(撞库)
2.密码-存储
严禁明文存储(防泄露)、单向变换(防泄露)、变换复杂度要求(防猜解)、加盐(防猜解)
3.密码-哈希算法
明文-密文--对应、雪崩效应、密文-明文--无法反推、密文固定长度、常见哈希算法:md5 sha1 sha256
4.密码-变换次数越多越安全
加密成本几乎不变(生成密码时速度慢一些)、彩虹表失效(数量太大,无法建立通用性)、解密成本增加N倍
5.密码-密码传输的安全性
https传输、频率限制、前端加密意义有限
6.密码-生物特征密码
指纹、声纹、虹膜、人脸
私密性-容易泄露 安全性-碰撞 唯一性-终身唯一,无法修改
九、SQL注入
1. SQL注入定义
Web应用程序未对前端传入后端的参数进行合法性校验,并且参数带入数据库查询,***者通过构造不同的SQL语句来实现对数据库的***
2.SQL注入***示例
select * from table where id = ${id}; ---> select * from table where id = 1 or 1 = 1;
3.SQL注入危害
猜解密码、获取数据、删库删表、托库
4.SQL注入防御
关闭错误输出、检查数据类型、对数据进行转义、使用参数化查询、使用ORM(对象关系映射)
十、文件上传
1.文件上传漏洞原理
***者通过上传可执行文件到服务端,来获取网站的权限,进而控制服务器
2.文件上传漏洞的防御
限制上传文件的后缀、文件类型检查、文件内容检查、程序输出、权限控制-可写可执行互斥
十一、社会工程学和信息泄露
1.信息泄露
泄露系统敏感信息、泄露用户敏感信息、泄露用户密码
2.信息泄露的途径
错误信息失控、SQL注入、水平权限控制不当、XSS/CSRF
3.社会工程学
昵称-真名-身份证号-手机号-邮箱-密码
4.社会工程学危害
你的身份由你掌握的资料确定、别人掌握了你的资料、别人伪装成你的身份、利用你的身份干坏事
5.OAuth思想
一切行为由用户授权、授权行为不泄露敏感信息、授权会过期
十二、其他安全问题
1.其他安全问题
拒绝服务***DOS、重放***
2.拒绝服务***DOS
模拟正常用户、大量占用服务器资源、无法服务正常用户
原理:TCP半连接、HTTP连接、DNS
3.大规模分布式拒绝服务***DDOS
流量可达几十到上百G、分布式(肉鸡、代理)、极难防御
4.DOS***防御
防火墙、交换机、路由器、流量清洗、高仿IP
5.DOS***预防
避免重逻辑业务、快速失败快速返回、防雪崩机制、有损服务、CDN
6.重放***
用户被多次消费、用户登录状态被盗取、多次抽奖
7.重放***防御
加密(HTTPS)、时间戳、token(session)、nonce、签名