web安全(初识)

 

目录

前言

一、攻击篇

1、跨站脚本攻击(Cross Site Script Attack)--- XSS

2、跨站请求伪造(Cross-site request forgery)---CSRF

3、注入攻击(Injection)

(1)、SQL Injection(最常见的注入攻击方式)

(2)、其他注入方式

4、拒绝服务(Denial of Service) --- Dos

(1)、ReDos:基于正则表达式的DOS

(2)、DDoS(Distributed)

5、中间人

二、防御篇

1、防御XSS

内容安全策略(Content Security Policy)--- CSP

2、CSRF的防御

请求头部

token

anti-pattern

SameSite Cookie(避免用户信息被携带)

3、Injection的防御

4、DOS的防御

(1)、Redex Dos

(2)、DDOS

5、中间人的防御(传输层)

前言

web 开发的安全问题一直都是重中之重的一环,当然安全问题在其他领域同样如此,在web 开发领域安全问题一旦出现问题,对用户可能是个人财产或隐私的造成损失、对公司可能造成巨额财产及客户的流失、同时也 关系到开发者工作的去留等一系列问题。分为两个方面:攻击和防御.

一、攻击篇

加入你是一个hacker

1、跨站脚本攻击(Cross Site Script Attack)--- XSS

常见攻击方式

  • 开发者盲目信任用户的提交内容,将用户填写的字符串直接转换为DOM操作

XSS的一些特点

  • 通常难以从以UI上感知(XSS攻击一般在暗地执行脚本)

  • 窃取用户信息(cookie/token)

  • 绘制UI(例如弹窗),诱骗用户点击/填写表单

XSS 分类(性质)

  • 恶意脚本被存在数据库中

  • 访问页面 => 读数据 === 被攻击

  • 危害最大,对全部用户可见

2、跨站请求伪造(Cross-site request forgery)---CSRF

特点:

  • 在用户不知情的前提下

  • 利用用户权限(cookie)

  • 构造指定HTTP请求,窃取或者修改用户敏感性息

3、注入攻击(Injection)

(1)、SQL Injection(最常见的注入攻击方式)

方式:

  1. HTTP请求SQL 参数被恶意注入

  2. 求其发送至服务端将SQL参数解析构建SQL语句并运行SQL代码

  3. 获取数据、修改数据、删除数据等一系列操作

(2)、其他注入方式

  • CLI :命令行

  • OS command :系统命令

  • Server-Side Request forgery(SSRF) 服务端伪造请求(虽然不属于注入但是原理类似)

4、拒绝服务(Denial of Service) --- Dos

描述:通过某种方式(构造特定请求),导致服务器资源被显著小号,来不及相应更多请求,导致请求挤压,进而雪崩效应。

(1)、ReDos:基于正则表达式的DOS

方式: 通过正则表达式的贪婪匹配,如果服务端在利用正则去匹配的时候,攻击者通过提交特定的信息,时服务待在进行正则匹配的时候需要通过不断回溯进行匹配。

结果: 响应时间增加、接口吞吐量下降。

(2)、DDoS(Distributed)

描述: 短时间按内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法相应新请求。

特征: 简单粗暴、以量大达成目的

攻击特点:

  • 直接访问IP

  • 任意API

  • 消耗大量带宽

5、中间人

描述:处于服务端与浏览器之间,接收来自浏览器或者服务器传过来的信息,可以对信息进行窃取、修改请求并返回等操作,处理后发送个服务器或者浏览器

原因:

  • 明文传输

  • 信息篡改不可知

  • 对方身份为未验证

中间人身份可以是:恶意的webview、路由器、ISP

二、防御篇

1、防御XSS

措施

  • 永远不信任用户的提交内容

    • 不要将用户提交内容直接转换为DOM

XSS --- 现成工具

  • 前端

    • 主流框架默认防御XSS

    • google-closure-library

  • 服务端(Node)

    • DOMPurify

需要注意的几种需求

  1. String--->DOM:渲染前进行扫描

  2. 需要添加svg图片时进行扫描,因为svg里是可以添加script标签的

  3. 避免用户自定义跳转行为,如无法避免应进行校验

  4. 允许用户自定义样式需额外注意

内容安全策略(Content Security Policy)--- CSP

功能

  • 判断那些源(域名)被认为是安全的

  • 来自安全源的脚本可以执行,否则直接抛错

  • 对内联script标签直接报错

2、CSRF的防御

请求头部

  • if 伪造请求 === 异常来源

  • then 限制请求来源 ----- > 限制伪造请求

  • Origin

    • 同源请求中,GET+HEAD 不发送

  • Referer

token

先有页面,后有请求

  • if (请求来自合法页面)

  • then (服务求接收过页面请求)

  • then (服务器可以表示)

anti-pattern

GET !== GET + POST

get请求和post请求按照其使用场景严格区分,避免因使用逻辑问题所造成的用户信息泄露

SameSite Cookie(避免用户信息被携带)


场景CSRF攻击利用用户权限进行攻击,然而请求访问并不携带Cookie ,是用户的页面只能由用户本人所使用,避免了跨站伪造请求的行为

限制内容

  • Cookie domain

    domain表示的是cookie所在的域,默认为请求的地址

  • 页面域名

3、Injection的防御

方法:

  • 找到项目中查询SQL的地方

  • 使用prepared statement

注意事项:

  • 最小权限原则

  • 简历允许名单 + 过滤

  • 对URL类型参数尽心协议、域名、ip等限制

4、DOS的防御

(1)、Redex Dos

方法:

  • Code Review(避免使用贪婪匹配的方式)

  • 代码扫描 + 正则性能测试

  • 禁止使用用户提供的正则

(2)、DDOS

方法:

  • 流量治理

    • 负载均衡

    • API网关

    • CDN

  • 快速自动扩容

  • 非核心服务降级

5、中间人的防御(传输层)

对于利用中间人进行防御从HTTPS出发

HTTPS部分特性

  • 可靠性:使用加密避免铭文传输

    • TLS的四次握手

  • 完整性:使用MAC验证,防止篡改

    • 传输: 加密信息 + 加密信息的hash值

    • 接收:重新计算并比对依次为校验信息是否被篡改

  • 不可抵赖性: 数字签名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值