Web开发安全

简介: Web开发安全
参加字节跳动的青训营时写的笔记。

1. 攻击

1.1 跨站脚本攻击(XSS)

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

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

比较巧妙的攻击方式:

image-20220127180108501

XSS特点

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

demo:

image-20220127173357726

1.1.1 Stored XSS

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

1.1.2 Reflected XSS

  • 不涉及数据库
  • 从URL上进行攻击

image-20220127174047613

1.1.3 DOM-based XSS

  • 不需要服务器的参与
  • 恶意攻击的发起、执行,都在浏览器完成

image-20220127174625118

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

1.1.4 Mutation-based XSS

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

2. 跨站伪造请求CSRF

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

image-20220127180459599

经典例子:银行转账

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

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

3. 注入攻击injection

3.1 SQL注入

image-20220127202310672

demo

image-20220127202606829

4. Dos

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

4.1 ReDoS

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

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

4.2 Distributed DOS(DDoS)

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

攻击特点:

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

DDoS攻击 demo:SYN Flood

原理:TCP的三次握手

image-20220127205207771

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

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

image-20220127205705566

5. 中间人攻击

image-20220127205738271

2. 防御

2.1 XSS

方案:

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

现成工具:

  • 前端:

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

    • DOMPurify

2.2 CSRF

2.2.1 同源政策

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

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

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

image-20220127230913468

2.2.2 CSP

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

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

两种形式:

  • 服务器的响应头部:

    image-20220127232201451

  • 浏览器meta

    image-20220127232216808

2.2.3 CSRF防御(token)

image-20220127232639659

2.2.4 SameSite Cookie

避免用户信息被携带

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

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

可以设置成三个值:

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

    Set-Cookie: CookieName=CookieValue; SameSite=Strict;

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

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

    Set-Cookie: CookieName=CookieValue; SameSite=Lax;

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

    image-20220127234433512

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

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

    Set-Cookie: widget_session=abc123; SameSite=None; Secure    

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

2.2.5 SameSite和CORS的区别

image-20220127235222723

2.3 Injection

image-20220127235528020

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

在SQL语句外做的防御

image-20220127235830052

2.4 Dos

2.4.1 ReDoS

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

2.4.2 DDoS

image-20220128000235944

2.5 防御中间人攻击

HTTPS防止中间人攻击

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

image-20220128000730701

HTTPS的一些特性

  • 可靠性:加密(非明文)
  • 完整性:MAC验证(防篡改),通过hash算法来实现,所以就算只有很小的改变,hash输出结果也会变化很大
  • 不可抵赖性:数字签名(确定身份)
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
184 4
|
5月前
|
Web App开发 监控 安全
OSS客户端签名直传实践:Web端安全上传TB级文件方案(含STS临时授权)
本文深入解析了客户端直传技术,涵盖架构设计、安全机制、性能优化等方面。通过STS临时凭证与分片上传实现高效安全的文件传输,显著降低服务端负载与上传耗时,提升系统稳定性与用户体验。
543 2
|
29天前
|
安全 Linux iOS开发
Burp Suite Professional 2025.10 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.10 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
204 3
|
5月前
|
缓存 JavaScript 前端开发
鸿蒙5开发宝藏案例分享---Web开发优化案例分享
本文深入解读鸿蒙官方文档中的 `ArkWeb` 性能优化技巧,从预启动进程到预渲染,涵盖预下载、预连接、预取POST等八大优化策略。通过代码示例详解如何提升Web页面加载速度,助你打造流畅的HarmonyOS应用体验。内容实用,按需选用,让H5页面快到飞起!
|
5月前
|
JavaScript 前端开发 API
鸿蒙5开发宝藏案例分享---Web加载时延优化解析
本文深入解析了鸿蒙开发中Web加载完成时延的优化技巧,结合官方案例与实际代码,助你提升性能。核心内容包括:使用DevEco Profiler和DevTools定位瓶颈、四大优化方向(资源合并、接口预取、图片懒加载、任务拆解)及高频手段总结。同时提供性能优化黄金准则,如首屏资源控制在300KB内、关键接口响应≤200ms等,帮助开发者实现丝般流畅体验。
|
前端开发 JavaScript Shell
鸿蒙5开发宝藏案例分享---Web页面内点击响应时延分析
本文为鸿蒙开发者整理了Web性能优化的实战案例解析,结合官方文档深度扩展。内容涵盖点击响应时延核心指标(≤100ms)、性能分析工具链(如DevTools时间线、ArkUI Trace抓取)以及高频优化场景,包括递归函数优化、网络请求阻塞解决方案和setTimeout滥用问题等。同时提供进阶技巧,如首帧加速、透明动画陷阱规避及Web组件初始化加速,并通过优化前后Trace对比展示成果。最后总结了快速定位问题的方法与开发建议,助力开发者提升Web应用性能。
|
5月前
|
JSON 开发框架 自然语言处理
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(三)
本文主要介绍了应用开发中的三大核心内容:生命周期管理、资源限定与访问以及多语言支持。在生命周期部分,详细说明了应用和页面的生命周期函数及其触发时机,帮助开发者更好地掌控应用状态变化。资源限定与访问章节,则聚焦于资源限定词的定义、命名规则及匹配逻辑,并阐述了如何通过 `$r` 引用 JS 模块内的资源。最后,多语言支持部分讲解了如何通过 JSON 文件定义多语言资源,使用 `$t` 和 `$tc` 方法实现简单格式化与单复数格式化,为全球化应用提供便利。
245 104
|
5月前
|
JavaScript 前端开发 API
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(二)
本文介绍了HarmonyOS应用开发中的HML、CSS和JS语法。HML作为标记语言,支持数据绑定、事件处理、列表渲染等功能;CSS用于样式定义,涵盖尺寸单位、样式导入、选择器及伪类等特性;JS实现业务逻辑,包括ES6语法支持、对象属性、数据方法及事件处理。通过具体代码示例,详细解析了页面构建与交互的实现方式,为开发者提供全面的技术指导。
261 104
|
5月前
|
开发框架 编解码 JavaScript
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(一)
该文档详细介绍了一个兼容JS的类Web开发范式的方舟开发框架,涵盖概述、文件组织、js标签配置及app.js等内容。框架采用HML、CSS、JavaScript三段式开发方式,支持单向数据绑定,适合中小型应用开发。文件组织部分说明了目录结构、访问规则和媒体文件格式;js标签配置包括实例名称、页面路由和窗口样式信息;app.js则描述了应用生命周期与对象管理。整体内容旨在帮助开发者快速构建基于方舟框架的应用程序。
255 102
|
2月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.9 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
335 0
Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描

热门文章

最新文章