网络安全
Contents
💠
-
- 2.1. Authenticate
- 2.2. Verfication
- 2.3. 盗链与防盗链
- 2.4. 工具或平台
-
- 3.1. ARP断网攻击
- 3.2. DOS
- 3.2.1. CC challenge collapsar attack
- 3.2.2. SYNFlood攻击
- 3.3. ClickJacking
- 3.4. CSRF
- 3.4.1. 解决方案
- 3.5. XSS
💠 2024-06-17 19:57:32
Web应用网络安全
中间人攻击
运营商劫持
整站使用HTTPS,即可避免
Web安全
关注常见的比如 XSS CSRF SQL注入 上传等问题的原理和修复方案。还有密码安全也基本上是面试必考点。 作为开发人员,需要详细了解安全问题的原理。 比如XSS的原理是因为用户将它的数据变成了JS代码,在页面中跑起来了,所以就可以为所欲为(例如A用户发布了一个包含恶意js的博客,只要该博客被其他用户打开浏览,就会在对应用户浏览器端执行)。 CSRF则是当用户不知情时,被黑客的网页通过图片、表单等请求时,用户的登录态(Cookies)在不知情的情况下会被发送到服务器,导致用户在不知情的情况下被利用身份。 点击劫持则是网页被嵌入到了其他网站中,并通过视觉隐藏的方式引导用户进行一些不知情的操作。 上传导致的漏洞是因为用户的文件没有做好判断和处理,导致传上来的文件被当成程序执行了。 SQL注入是用户的数据被当成了表示SQL语义的部分,改变了原来的查询语句的语义,从而产生意料之外的结果。 反向代理服务器,构建在web服务器与 客户端之间,保护web服务器,服务端发送到客户端的请求被代理
Authenticate
OAuth 2.0
JWT
jwt
JSON WEB TOKEN
需要注意的是,不是什么数据都适合放在 Cookie、localStorage 和 sessionStorage 中的。使用它们的时候,需要时刻注意是否有代码存在 XSS 注入的风险。 因为只要打开控制台,你就随意修改它们的值,也就是说如果你的网站中有 XSS 的风险,它们就能对你的 localStorage 肆意妄为。所以千万不要用它们存储你系统中的敏感数据
修改密码
- Token中存入: userId 密码的部分Hash值
- 弊端:Token变成了有状态的,需要每次请求都要去数据库比对
退出登录
由于JWT的设计是无变化状态的,所以理论上退出登录后,Token仍是有效可用的,此时只能由服务端再加一层逻辑来实现Token失效
- 白名单 登录存入,退出时删除, 类似于Session
- 黑名单 存入需要失效的Token,但是理论上会占用更大空间(只能移除黑名单中过期的Token,如果Token有效期都很长,会缓存大量的Token)
token vs session
- JWTs vs. sessions: which authentication approach is right for you?
- TODO CSRF 问题? 浏览器跨源访问 读写策略 引起 cookie泄漏的问题,假如使用token,安装了恶意插件,一样获取到token,如何避免?
Verfication
最常见和简单的就是 数字验证码, 通常能在一些公共服务的API中发现校验码的存在
CAPTCHA
CAPTCHA 全称 “全自动区分计算机和人类的图灵测试”(Completely Automated Public Turing Test to Tell Computers and Humans Apart) 它是一种区分用户是计算机还是人的计算程序,这种程序生成人类能很容易通过但计算机通不过的测试,并进行判定,人/机进行测试的过程称为一次“挑战”。
盗链与防盗链
- 利用 referer 来控制
- 实现简单,绕过也简单
- 设想 中间使用一个认证中间件(请求静态文件需要携带token,token需要js方式计算获取,且有有效期),提高盗链难度
工具或平台
攻击手段
ARP断网攻击
DOS
CC challenge collapsar attack
CC攻击是攻击者借助代理服务器生成指向受害主机的合法请求,实现DDoS和伪装攻击。攻击者通过控制某些主机不停地发送大量数据包给对方服务器,造成服务器资源耗尽,直至宕机崩溃。
例如对站点的部分接口或页面发起大量客户端线程访问。
SYNFlood攻击
洪水攻击 参考博客 SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。
- hping: Sync攻击
hping -S -p 80 --flood 192.168.1.234
- 修改文件
sudo vim /etc/sysctl.conf
- 将注释取消 修改值:
net.ipv4.tcp_syncookies = 0
就能提高并发总量,但是并发量还是不能提高
- 将注释取消 修改值:
|
|
ClickJacking
点击劫持是一种视觉上的欺骗手段。攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。
- DENY:不能被嵌入到任何iframe或者frame中。
- SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中
- ALLOW-FROM uri:只能被嵌入到指定域名的框架中
CSRF
CSRF (Cross Site Request Forgery)
跨站请求伪造
指在一个浏览器中打开了两个标签页,其中一个页面通过窃取另一个页面的 cookie 来发送伪造的请求
例如: A站点某网页 a.html,被插入了指向B站点的URL的image标签利用 cookie 会随着当前页面的请求自动放入请求 Header 发送到服务端的特性,A站点的cookie会发送至B站点
[Web 安全] 如何通过JWT防御CSRF web安全之token和CSRF攻击 博客:CSRF漏洞的原理 浅谈CSRF攻击方式 参考提问下的回答
解决方案
token
- 打开当前页面时服务端先传递一个token给前端,前端后续的请求都需要携带该token(作请求参数或者Header),否则拒绝请求,这样能避免img标签方式的 CSRF
Cookie 中的 SameSite属性 Cookie详情
XSS
Cross Site Scripting
跨站脚本攻击
Author Kuangcp
LastMod 2018-11-21