第一节 课程介绍

  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、签名