前端安全知识点
XSS(Cross Site Scripting)跨站脚本攻击
xss 有三种类型,分别是存储型,反射型,DOM 型
类型 | 存储区 | 插入点 |
---|---|---|
存储型 | 数据库 | HTML |
反射型 | URL | HTML |
DOM 型 | 后端数据库/前端存储/URL | Javascript |
存储型 XSS
存储型主要是会把恶意代码存储在数据库中,用户访问从数据库读取恶意代码,然后插入到页面中。常见于留言板,论坛等。
反射型
反射型主要通过访问 url 携带参数,经过服务器路由或客户端路由跳转到新的页面,如果这时候把参数直接输出到页面,就会直接执行恶意代码
反射型和存储型的主要区别是有没有一个存储恶意代码的介质,一个是存储在数据库,一个是直接输出到页面
DOM 型
DOM 型基于文档对象模型,属于反射型的一种。一般是 html 代码里面有一些恶意的 script 代码直接在浏览器解析执行
XSS 如何防御防御
转义 HTML,对于输入的 HTML 代码,防御的方式是把输入的 HTML 代码转义,比如把
<script>
转义成<script>
;使用内容安全策略(CSP)
什么 HTTP 劫持
比如某一天你通过 PC,移动端打开浏览器,输入 www.1024nav.com 想要去查看前端面试指南,当输入完地址按下回车键的时候,发现跳转过去的页面是一个澳门赌博网址(广告)。😹 这个现象就是 HTTP 劫持
HTTP 劫持的原理
通过监听客户端与服务器之间数据传输,当满足特定条件(比如监听到访问 HTML 文件)就可以做一个转发,或者在返回的数据报文里插入特定的代码(广告),返回给用户输出到浏览器
HTTP 劫持的方式有哪些
HTTP 劫持有 DNS 劫持和内容劫持
- DNS 劫持
通过浏览器,路由,DNS 运营商进行请求重定向到其他网址
- 内容劫持
拦截请求响应的 HTML 数据,对 HTML 内容进行修改,插入 js 代码或者 iframe 代码
如何防御
- 开启 HTTPS,HTTPS 是在 HTTP 基础上加入 TLS 保护,数据传输是加密的,无法劫持
- 使用信誉良好的 DNS 厂商,手机,浏览器厂商