1: 简要描述 HTTPS 的安全机制,描述 Http2 和 Https 的关系
Https 实现原理
HTTPS 在通讯过程中的原理,总共分为 8 步 :
- 1: 客户端发起 HTTPS 请求 2: 服务端的配置
- 3: 传送证书 4: 客户端解析证书
- 5: 传送加密信息 6: 服务端解密信息
- 7: 传输加密后的信息 8: 客户端解密信息
http2 和 https 的关系
- HTTP 协议通常承载于 TCP 协议之上,在 HTTP 和 TCP 之间添加一个安全协议层(SSL 或 TSL),这个时候,就成了我们常说的 HTTPS。
- 默认 HTTP 的端口号为 80; HTTPS 的端口号为 443。
2: 什么是点击劫持?如何防范?
最常见的是恶意网站:使用 <iframe> 标签(把我们自己含有重要的信息的网页:如交易页面)嵌入进去,然后把 iframe 设置透明,用定位的手段,引诱用户在恶意网站上点击,这样用户在不知不觉中就进行了某些不安全的操作
有两种方式可以防范:【 iframe会阻塞主页面的Onload事件 】
-
1: 使用 JS 防范:
// 如果iframe 和 当前被嵌入的页面 不在同一域名下,则表示存在,非法网页嵌入的可能
if (top.location.hostname !== self.location.hostname) {
alert("您正在访问不安全的页面,即将跳转到安全页面!");
top.location.href = self.location.href;
}
-
2: 使用HTTP头防范:
1: 通过配置 nginx 发送 X-Frame-Options 响应头,这样浏览器就会阻止嵌入网页的渲染。
2: add_header X-Frame-Options SAMEORIGIN;
3: CSRF
概念:CSRF 跨站点请求伪造 跟 XSS一样,存在巨大危害性,是一种对网站的恶意利用,尽管听起来像跨站脚本(XSS)。但是它与XSS非常不同【 XSS利用站点内的信任用户; CSRF通过伪装受信任用户的请求来利用受信任的网站】与XSS相比,CSRF 攻击不太流行(因此对其防范的资源也相对较少),和难以防范,所以认为比 XSS 更具危险。
简单理解: 你可以这样来理解:攻击者盗用了你的身份,以你的身份发送恶意请求(如:发邮件,发信息,盗取你的账号,添加系统管理员,购买商品,虚拟货币转账等),对服务器来说这个请求是合法的,但是却完成了攻击者想要的一个操作。如下:其中 Web A 为存在 CSRF漏洞的网站,Web B为攻击者恶意构建的网站,User C 为 Web A 网站的合法用户:
1: 用户 C 打开浏览器,访问受信任的 Web A 网站,输入用户名和密码请求登录网站 A
2: 在用户信息通过验证之后,网站 A 产生cookie信息 并返回给浏览器,此时用户成功登录网站 A, 可以正常向网站 A 发送请求
3: 用户未退出 网站 A 之前,在同一浏览器中,打开一个TAB页访问 网站 B
4: 网站 B 接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A
5: 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带 cookie向站点A发送请求,站点A并不知道该请求是由网站B发起的,所有会根据用户C的 cookie信息 以C的权限处理该请求,导致来自网站B的恶意代码被执行
预防CSRF方法:
1:验证 HTTP Referer 字段
2: 请求地址添加token,并校验
3: 在http请求头里面自定义属性,并校验
特点
- 依靠用户标识危害网站
- 利用网站对用户标识的信任
- 欺骗用户的浏览器发送 HTTP 请求给目标站点
- 另外可以通过 IMG 标签会触发一个 GET 请求,可以利用它来实现 CSRF 攻击。
防御
- 通过 referer、token 或者验证码来检测用户提交。
- 尽量不要在页面的链接中暴露用户隐私信息。
- 对于用户修改删除等操作最好都使用 post 操作 。
- 避免全站通用的 cookie,严格设置 cookie 的域
4: XSS
概念: XSS是一种经常出现在 web应用中 的 计算机安全漏洞,它允许 恶意web用户 将代码(如HTML代码,客户端脚本)植入到 提供给其他用户使用的页面 中,攻击者利用 XSS 漏洞旁路掉访问控制-----同源策略,这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击,而变得广为人知,对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的 “缓冲区溢出攻击” , 而JavaScript是新型的ShellCode
示例:
<script>alert(document.cookie)</script>
特点
能注入恶意的 HTML/JavaScript 代码到用户浏览的网页上,从而达到 Cookie 资料窃取、会话劫持、钓鱼欺骗等攻击。 【 攻击代码不一定(非要)在 <script></script> 中】
原因
- 1:web浏览器本身的设计不安全,浏览器能解析和执行JS代码,但是不会判断该数据或程序代码是否是恶意的;
- 2:输入输出是web应用最基本的交互,而且网站的交互功能越来越丰富;如果在这个过程中没有做好安全防护,很容易出现XSS漏洞
- 3:开发人员没有相关的安全意识
- 4:XSS攻击手段灵活多变
危害
- 1: 盗取各类用户账号:(登录账号,用户网银账号,各类管理员账号)、
- 2:控制企业数据:(读取,篡改,添加,删除,企业敏感数据的能力)
- 3:窃取企业重要的具有商业价值的资料
- 4:非法转账
- 5:强制发送邮件
- 6:网页挂马(将 木马程序 下载到用户本地,并进一步执行,当木马获得执行之后,就意味 着会有更多的木马被下载,进一步被执行,进入一个恶性的循环,从而使用户的电脑遭到攻击和控制)
- 7:控制受害者机器向其他网站发起攻击
如何防范
- 1: 将重要的cookie标记为http-only,这样 JS语句中document.cookie 语句就获取不到cookie了
- 2: 表单数据规定值的类型:如 年龄必须是int,name:只能是数字加字母组合。。。
- 3: 对数据进行 Html Encode处理
- 4: 过滤 或 移除特殊的 html 标签:如:<script> , <iframe> , < for <, > for >, " for
- 5: 过滤JavaScript 事件标签:"onclick" , "onfocus" 等待
解析:参考资料:
https://www.cnblogs.com/phpstudy2015-6/p/6767032.html
https://www.cnblogs.com/443855539-wind/p/6055816.html
https://baike.baidu.com/item/XSS%E6%94%BB%E5%87%BB/954065?fr=aladdin
5: