Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Web开发安全

Web开发安全

作者头像
赤蓝紫
发布于 2023-01-02 08:54:28
发布于 2023-01-02 08:54:28
1K00
代码可运行
举报
文章被收录于专栏:clzclz
运行总次数:0
代码可运行

Web 开发安全

参加字节跳动的青训营时写的笔记。这部分是刘宇晨老师讲的课。

1. 攻击

1.1 跨站脚本攻击(XSS)

XSS 攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。

如填写表单信息时,如果盲目相信用户的提交内容,那么假如用户填写了类似 <script>alert("注入恶意代码")</script>的信息,然后直接通过 element.innerHTML 把用户提交的代码存起来的话,那么工具者就可以实现攻击了。

比较巧妙的攻击方式:

XSS 特点

  • 通常难以从 UI 上发现,因为是在暗地里执行脚本
  • 可以窃取用户信息(cookie、token)
  • 还可以绘制 UI(如弹窗),诱骗用户点击

demo:

1.1.1 Stored XSS

把恶意脚本存储在被攻击网站的数据库中。当其他人访问页面时,回去读数据,然后就会执行到数据库中的恶意脚本,从而被攻击。危害最大,对全部用户可见

1.1.2 Reflected XSS
  • 不涉及数据库
  • 从 URL 上进行攻击
1.1.3 DOM-based XSS
  • 不需要服务器的参与
  • 恶意攻击的发起、执行,都在浏览器完成

和 Reflected XSS 很像,不过,Reflected XSS 的恶意脚本是注入到服务器中,而 DOM-based XSS 的恶意脚本是注入到浏览器中,而且攻击不需要服务器的参与

1.1.4 Mutation-based XSS
  • 利用浏览器渲染 DOM 的特性(独特优化)
  • 按浏览器进行攻击

2. 跨站伪造请求 CSRF

CSRF 攻击:在用户不知情的前提下,利用用户权限(cookie),构造 HTTP 请求,窃取或修改用户敏感信息。

经典例子:银行转账

首先,a 为了转账给 b10000 元,于是 a 登录银行页面进行转账操作, 还没有推出登录,又收到中奖通知链接(假的或者是只有小额鱼饵),a 点击链接,并点击领奖按钮。然后发现钱被转走了 100000 元了。

CSRF 攻击原理:利用cookie 的自动携带特性,在其他网站向你的网站发送请求时,如果网站中的用户没有退出登录,而发送的请求又是一些敏感的操作请求(如转账),则会给用户带来巨大的损失。

3. 注入攻击 injection

3.1 SQL 注入

demo

4. Dos

通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,导致请求挤压,进而引起雪崩效应。

4.1 ReDoS

例子:上网找到了讲的非常好的文章

正则表达式所引发的 DoS 攻击(ReDoS)

4.2 Distributed DOS(DDoS)

短时间内,来自大量僵尸设备的请求,服务器不能及时响应全部请求,导致请求堆积,进而引发雪崩效应,无法响应新请求。

攻击特点:

  • 直接访问 IP
  • 任意 API
  • 消耗大量带宽(耗尽)

DDoS 攻击 demo:SYN Flood

原理:TCP 的三次握手

如果客户端给服务器发送的 ACK 丢失的话,服务器不知道丢失,会等客户端的 ACK,超时后重新发送 SYN-ACK 消息给客户端,直到重试超过一定次数才会放弃。

而 SYN Flood 就是通过发送大量的 SYN,但是不给服务器发送 ACK,从而耗尽服务器的资源。

5. 中间人攻击

2. 防御

2.1 XSS

方案:

  • 永远不信任用户的提交内容
  • 不把用户提交内容直接转换成 DOM

现成工具:

  • 前端:
    • 主流框架默认防御 XSS
    • google-closure-library
  • 服务端(Node):
    • DOMPurify

2.2 CSRF

2.2.1 同源政策

浏览器的同源政策:A 网页设置的 Cookie,B 网页不能打开,除非这两个网页”同源”。所谓”同源”指的是”三个相同”。(出自阮一峰的网络日志)

  • 协议相同
  • 域名相同
  • 端口相同

同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。

2.2.2 CSP

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

  • 决定好哪些源(域名)是安全的
  • 来自安全源的脚本可以执行,否则直接报错
  • 对于 eval / inline script 直接禁止

两种形式:

  • 服务器的响应头部:
  • 浏览器 meta
2.2.3 CSRF 防御(token)
2.2.4 SameSite Cookie

避免用户信息被携带

下面的部分参考自Cookie 的 SameSite 属性

Cookie 的 SameSite 属性用来限制第三方 Cookie,从而减少安全风险。

可以设置成三个值:

Strict:最严格。完全禁止第三方 Cookie,跨站点时,任何情况都不会发送 Cookie

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Set-Cookie: CookieName=CookieValue; SameSite=Strict;

用户体验不会很好。比如访问别人的项目网站时,有个 fork me 链接到 github,然后点击跳转不会带有 github 的 token,所以跳转过后,都会是未登录状态

Lax:大多数情况不发送第三方 Cookie,但是导航到目标地址的 GET 请求会发送。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Set-Cookie: CookieName=CookieValue; SameSite=Lax;

导航到目标地址的 GET 请求:链接、预加载、GET 表单

设置了 Strict 或 Lax 之后,基本杜绝了 CSRF 攻击。

None:显示关闭 SameSite 属性。前提是需要同时设置 Secure 属性(Cookie 只能通过 HTTPS 协议发送),否则无效

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Set-Cookie: widget_session=abc123; SameSite=None; Secure

应用场景是依赖 Cookie 的第三方服务:如网站内嵌其他网站的播放器,开启 SameSite 属性后,就识别不了用户的登录态,也就发不了弹幕了

2.2.5 SameSite 和 CORS 的区别

2.3 Injection

貌似是 Java 中的,我没用过,也不好说。不过查了下资料,prepareStatement 对象防止 sql 注入的方式是把用户非法输入的单引号用\反斜杠做了转义,从而达到了防止 sql 注入的目的。

在 SQL 语句外做的防御

2.4 Dos

2.4.1 ReDoS
  • Review 代码
  • 代码扫描 + 正则性能测试
  • 拒绝使用用户提供的正则
2.4.2 DDoS

2.5 防御中间人攻击

HTTPS 防止中间人攻击

HTTPS 其实是SSL+HTTP的简称,当然现在SSL基本已经被TLS取代了

HTTPS 的一些特性

  • 可靠性:加密(非明文)
  • 完整性:MAC 验证(防篡改),通过 hash 算法来实现,所以就算只有很小的改变,hash 输出结果也会变化很大
  • 不可抵赖性:数字签名(确定身份)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Web安全基础 - 笔记
例如: SELECT XXX FROM ${'any; DROP TABLE table;'}
TagBug
2023/03/17
3810
Web安全基础 - 笔记
前端网络安全 常见面试题速查
XSS 安全漏洞 简单转义是否有防护作⽤ HTML 标签⽂字内容 有 HTML 属性值 有 CSS 内联样式 ⽆ 内联 JavaScript ⽆ 内联 JSON ⽆ 跳转链接 ⽆
Cellinlab
2023/05/17
8250
面试中常见的的 web 安全问题
安全涉及的领域很大, 我也仅仅是了解一些皮毛, 每次面试前都要找资料复习, 很麻烦。
前端迷
2019/10/22
8430
微服务设计原则——低风险
虽然很多时候感觉网络攻击和安全事故离我们很远,但一旦发生,后面不堪设想,所以服务接口的安全问题是设计实现过程中不得不考虑的一环。
恋喵大鲤鱼
2024/03/27
3030
常见的Web攻击手段,拿捏了!
大家好,我是小菜。一个希望能够成为 吹着牛X谈架构 的男人!如果你也想成为我想成为的人,不然点个关注做个伴,让小菜不再孤单!
蔡不菜丶
2021/08/20
6280
保护你的网站免受黑客攻击:深入解析XSS和CSRF漏洞
👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
Lorin 洛林
2024/04/27
7970
保护你的网站免受黑客攻击:深入解析XSS和CSRF漏洞
【云安全最佳实践】WEB安全常见攻击与防范
对于常规的Web攻击手段,如XSS、CSRF、SQL注入、(常规的不包括文件上传漏洞、DDoS攻击)等1.XSS跨站脚本攻击,因为缩写和css重叠,所以能叫XSS,跨脚本攻击是指通过存在安全漏洞的web网站注册用户的浏览器内非法的非本站点HTML标签或javascript进行一种攻击。跨站脚本攻击有可能造成以下影响利用虚假输入表单骗取用户个人信息用脚本窃取用户的cookie值,被害者在不知情况的下,帮助攻击者发送恶意请求防范手册HEAD ctx.set('X-XSS-Protection',0) //禁止X
小周sir
2022/10/31
12.9K0
白帽子讲web安全 pdf_白帽子讲web安全适合初学者看吗
一个网站的数据库,在没有任何保护的情况下,数据库服务端口是允许任何人随意连接的;在有了防火墙的保护后,通过ACL可以控制只允许信任来源的访问。这些措施在很大程度上保证了系统软件处于信任边界之内,从而杜绝了绝大部分的攻击来源。
全栈程序员站长
2022/09/29
6330
白帽子讲web安全 pdf_白帽子讲web安全适合初学者看吗
跨站请求伪造—CSRF
CSRF,是跨站请求伪造(Cross Site Request Forgery)的缩写,是一种劫持受信任用户向服务器发送非预期请求的攻击方式。
FEWY
2019/11/27
1.4K0
真的!Web安全入门看这个就够了
在Web发展初期由于对安全问题认知认识不足,导致发生过许多的安全问题,且遗留下许多历史问题:如PHP语言至今只能依靠较好的代码规范来防范文件包含漏洞,而无法从语言本身来杜绝此类安全问题的发生。常见的安全漏洞:SQL注入、XSS攻击、CSRF。
Java程序猿
2023/04/12
1K0
前端安全防护:XSS、CSRF攻防策略与实战
跨站脚本攻击(XSS)和跨站请求伪造(CSRF)是威胁用户数据安全和网站稳定性的两大主要风险。在本文中,我将深入剖析这两种攻击方式的特点与危害,介绍针对性的防御策略,并通过代码示例演示如何在实际开发中有效实施这些防护措施。
Jimaks
2024/04/16
8830
深入解析XXS攻击
XXS攻击是一种注入恶意脚本代码到网页中的攻击手段。攻击者通过在Web应用中注入JavaScript或其他恶意脚本,使得用户在访问受影响页面时,这些脚本被执行。这可能导致用户数据被窃取、会话劫持,以及其他安全漏洞的利用。
GeekLiHua
2025/01/21
2340
浏览器工作原理 - 安全
浏览器默认两个相同的源之间是可以相互访问资源和操作 DOM 的。两个不同源之间要相互访问或者操作 DOM,会有一套基础的安全策略制约,即同源策略。
Cellinlab
2023/05/17
6410
浏览器工作原理 - 安全
web安全浅析
写这篇文章的初衷,主要由于自己所负责的项目有这方面的需求,就简要提一提web安全方面的一些知识 一.web安全的兴起 web攻击技术经历几个阶段 a.服务器
lyb-geek
2018/03/27
1.8K0
web安全浅析
Web 最常见安全知识总结
随着Web2.0、网络社交等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中,越来越多的应用都架设在Web平台上。Web业务的迅速发展吸引了黑客们的强烈关注,接踵而至的就是Web安全威胁的凸显。黑客利用网站操作系统的漏洞和Web服务程序的SQL注入漏洞等得到Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严重的则是在网页中植入恶意代码,使得网站访问者受到侵害。这使得越来越多的用户关注应用层的安全问题,Web应用安全的关注度也逐渐升温。 本文从目前比
李海彬
2018/03/27
1.2K0
Web 最常见安全知识总结
常见web攻击
常见web攻击:https://www.cnblogs.com/morethink/p/8734103.html 搞Web开发离不开安全这个话题,确保网站或者网页应用的安全性,是每个开发人员都应该了解的事。本篇主要简单介绍在Web领域几种常见的攻击手段及Java Web中的预防方式。
用户5760343
2022/05/19
8320
常见web攻击
Web Security 之 CSRF
在本节中,我们将解释什么是跨站请求伪造,并描述一些常见的 CSRF 漏洞示例,同时说明如何防御 CSRF 攻击。
凌虚
2021/03/19
2.6K0
Web Security 之 CSRF
Web 安全学习
去年一家专门做企业安全的公司来我们公司做测试和培训,经过他们一周多的测试,找到了公司多个项目中存在的很多问题,惊奇地发现,我们组的前端项目竟然没有发现一个漏洞。虽然没有找到并不代表没有,但是从中也能看出我们组在这方面还是有些实力的。而我对安全方面可以说是没有多少积累,最近抽时间学习一下 web 安全相关的知识。
李振
2021/11/26
6810
web安全之XSS
XSS: (Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞。
超然
2018/08/03
3110
web安全之XSS
Spring Security 之防漏洞攻击
了解CSRF攻击的最好方式是通过一个具体的例子。 假设您的银行网站提供了一个转账页面,允许从当前的登录用户向另一个账户转账,转账单可能如下: Example 1. 转账表单
阿提说说
2022/11/18
2.7K0
相关推荐
Web安全基础 - 笔记
更多 >
LV.1
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验