网络安全 | 青训营笔记

103 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第6天。

Web开发安全:

一.攻击

1.CSRF

CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。

CSRF的特点
  • 攻击一般发起在第三方网站。
  • 攻击利用受害者在被攻击网站的登录凭证,冒充受害者提交操作。
2.XSS

Cross-Site Scripting(跨站脚本攻击)简称 XSS,是一种代码注入攻击。攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息,进而危害数据安全。为了和 CSS 区分,这里把攻击的第一个字母改成了 X,于是叫做 XSS。

XSS 的本质是:恶意代码未经过滤,与网站正常的代码混在一起;浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行。

3.Injection
a. SQL Injection

SQL注入,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的。

b. CLI

命令行注入。

c. OS command

系统命令。

d. Server - Side Request Forgery(SSRF)

服务端伪造请求,严格来说,SSRF不是Injection但是原理类似

4.DOS攻击

DOS攻击是利用程序漏洞一对一的执行资源耗尽的Denial of Service拒绝服务攻击。

攻击特点:
  • 直接访问IP
  • 任意API
  • 消耗大量API

二.防护

1.CSRF
1.阻止不明外域访问
  • 同源检测

使用Origin Header确定来源域名和使用Referer Header确定来源域名。

2.提交时附加本域才能获取的信息
  • CSRF Token

本页面请求时携带Token。

2.XSS

1.过滤用户的恶意代码

2.对HTML充分转义

3.代码和数据分开

4.在使用 .innerHTML.outerHTMLdocument.write() 时要特别小心,不要把不可信的数据作为 HTML 插到页面上,而应尽量使用 .textContent.setAttribute() 等。

3.Injection

1.最小权限原则

2.建立白名单

3.对于URL类型参数进行限制。

4.DDOS

1.流量治理

  • 负载均衡
  • API网关
  • CDN

2.快速非自动扩容

3.非核心服务降解