博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
web安全问题分析与防御总结
阅读量:5961 次
发布时间:2019-06-19

本文共 2427 字,大约阅读时间需要 8 分钟。

一、XSS跨站脚本攻击

数据中包含脚本。

1、xss分类

①反射型
通过url参数注入,形成一个有毒的链接。
②存储型
这段脚本经过数据库。

2、xss攻击的注入点

①HTML节点内容
节点中包含<script></script>标签
②HTML属性
某个属性被"或者'提前关闭,攻击者加上另外一些可运行脚本的属性。
③JavaScript代码
字符串提前关闭。
④富文本
本身就是一段HTML,可能出现很多种注入方式。

3、XSS攻击防御

①对于HTML节点内容、HTML属性、JavaScript代码类型攻击使用字符串转义
②富文本的防御使用白名单
③CSP

二、CSRF跨站请求伪造攻击

CSRF是让用户在不知情的情况,冒用其身份发起了一个请求。

比如,点击不知情链接,利用图片url.src发送请求。

1、CSRF攻击原理

①用户1登录A网站
②A网站确认身份
③用户1没有退出登录,并且使用同一浏览器打开一个不知情的B网站。
④B网站页面向A网站发起请求(携带A网站的cookie)

2、CSRF攻击防御

①same-site属性
禁止第三方网站携带cookie
②验证码
使得必须访问A网站的前端,才能获取到验证码。
③token
验证码有时候会影响用户体验。使用token,服务器端发送一个随机的token到客户端,客户端发送请求带上token。
⑤referer
禁止来自第三方网站的请求。

三、Cookie安全

比如Cookie中存放了用户ID,这个用户ID就面临着被篡改或者被盗取的风险。

1、Cookie和XSS

①XSS可以偷取Cookie
②http-only的Cookie不会被偷

2、Cookie和CSRF

①CSRF利用了用户Cookie
②攻击站点无法读取Cookies
③最好能阻止第三方使用Cookies(same-site)

3、Cookie安全防御

①用户ID+签名
利用签名验证用户ID是否被篡改。
②用户ID加密(srypt)
服务端进行加密后再传输,收到请求再解密。
③SessionId
服务端使用session保存用户ID,传送SessionId给客户端。
④http-only
防止XSS攻击盗取Cookie。
④same-site
防止CSRF利用了用户Cookie。
⑤secure
只有HTTPS才可以读取Cookie,保证Cookie在传输过程中的安全。

四、前端点击劫持

点击劫持原理本质就是利用iframe实现了障眼法。用户真正点击的其实不是用户所看到的东西。真正的东西把透明度设置成了0,用户看不到。这样可以诱导用户在不知情的情况下完成某些操作。

1、点击劫持的防御

①禁止内嵌iframe(JavaScript禁止内嵌 、sandbox)
②其他辅助:加验证码

五、传输安全问题

HTTP是明文传输,所以在传输过程中有可能被窃听和篡改。

1、HTTP窃听

①用户名密码
②传输敏感信息
③个人资料(银行卡……)

2、HTTP篡改

①插入广告
②重定向网站
③无法防御XSS和CSRF
④运营商和局域网劫持

3、传输安全问题防御

①HTTPS
以安全为目标的HTTP通道,简单讲是HTTP的安全版。
安全保障:TLS(SSL)加密+CA证书。

六、密码安全

1、密码泄露

①数据库被偷
②服务器入侵
③通讯被窃听
④内部人员泄露数据

2、密码存储

①严禁明文存储(防泄露)
②单项变换(防泄漏)
③变换复杂度要求(防猜解)
④密码复杂度要求(防猜解)
⑤加盐(防猜解)

3、加密

md5 sha1 sha256

4、前端加密

前端加密意义有限,但是并不是没有意义。比如保护用户隐私,防止猜测用户其他网站的密码等。

七、SQL注入

SQL注入和XSS攻击有点相似。写入数据库中的数据变成SQL语句逻辑。攻击者可以通过SQL命令攻击程序弱点。深层次的原因是网站程序上允许SQL语句传递到数据库,并且直接和数据库交互。

1、危害

①猜解密码(工具)
②获取数据
③删库删表
......

2、SQL注入的防御

①关闭错误输出
错误信息输出到前端会让黑客更加准确的定位错误。
②检查数据类型,参数。
parseInt()
③对数据进行转义。
npm install mysql
④使用参数化查询。
npm install mysql2
⑤使用ORM(对象关系映射)
npm install sequelize

3、NoSQL注入

NoSQL(不仅仅是NoSQL)数据存储系统已经非常流行,因为它们易扩展且易于使用。尽管NoSQL数据存储的新的数据模型和查询格式令原来的攻击不再有效了,但攻击者却可以寻找新的契机插入恶意代码。

1、NoSQL防御

①检查数据类型
②类型转换
③写完整条件(验证对象内容)

八、上传问题

1、过程

①上传文件
②再次访问上传的文件
③上传的文件被当成程序解析

2、上传问题防御

①限制上传后缀
②文件类型检查
③文件内容检查(文件头信息)
④程序输出(读,写,性能有影响)
⑤权限控制-可写可执行互斥

九、其他安全问题

1、拒绝服务DOS

①模拟正常用户
②大量占用服务器资源(上线)
③系统崩溃

2、分布式拒绝服务攻击DDOS

①流量可达几十到上百G
②分布式(肉鸡,代理)
③难防御

3、DOS防御

①防火墙
②交换机、路由器防御
③流量清洗
④高防IP
⑤避免重逻辑业务
⑥快速失败快速返回
⑦防雪崩机制
......

4、重放攻击

重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。

后果:

①用户被多次消费
②用户登录态被盗取
③多次抽奖
......

防御:

①加密(HTTPS)
②时间戳
③token
④nonce
⑤签名(防篡改)

转载地址:http://vejax.baihongyu.com/

你可能感兴趣的文章
Vuex学习
查看>>
bootstrap - navbar
查看>>
切图崽的自我修养-[ES6] 编程风格规范
查看>>
服务器迁移小记
查看>>
FastDFS存储服务器部署
查看>>
Android — 创建和修改 Fragment 的方法及相关注意事项
查看>>
swift基础之_swift调用OC/OC调用swift
查看>>
Devexpress 15.1.8 Breaking Changes
查看>>
Java B2B2C多用户商城 springcloud架构- common-service 项目构建过程(七)
查看>>
ElasticSearch Client详解
查看>>
新零售讲堂之时代下的传统零售业,何去何从?
查看>>
c++读取和写入TXT文件的整理
查看>>
linux安全问答(1)
查看>>
mybatis update返回值的意义
查看>>
expdp 详解及实例
查看>>
解读最具O2O属性—哈根达斯微信企业号的成功之道
查看>>
Extjs4.x (MVC)Controller中refs以及Ext.ComponentQuery解析
查看>>
Server-01 How to Find the Remote Desktop Port
查看>>
Java--接口、抽象与继承
查看>>
通过IP判断登录地址
查看>>