当前位置: 首页 > news >正文

第四十天(Vue)

1、Vue 搭建

参考:Vue.js - 渐进式 JavaScript 框架 | Vue.js

已安装18.3或更高版本的Node.js

2、Vue 创建

vite创建:npm create vite@latest

创建vue:npm create vue@latest

 在webstrom中打开一个文件夹,,然后打开终端

这样就在终端中启动了当前文件

终端中输入命令 npm create vue@latest 直接回车即可 ,第一个是设置项目名称,可以自定义也可以直接用默认的

 

 开发的项目一般是放在src 里面

3、Vue 启动

cd

安装依赖:npm install

开发启动:npm run dev dev 是已开发者模式启动项目 测试时用的

打包构建:npm run build 上线时就要打包构建了

先用cd 进到创建的文件目录下 ,再安装依赖

 

再启动项目

复制网址打开查看

分析显示页面是加载哪个文件:

首先查看目录下的index.html 文件 ,发现引用了src下的main 文件

来到这里后看到是来自一个App.vue 文件

来到app.vue 下,页面中显示的 you did it! 就来自这里, 又看到引用了其他两个文件,那么就打开看看

果然在里面看到了显示的内容 ,

另一个vue ,就显示页面右边的内容了

打包构建 命令 npm run build

这里就会自动创建一个dist文件夹放置打包好的文件了

直接用浏览器打开访问这个index.html

这样访问是看不到内容的,要将打包好的文件放到phpstudy 搭建的网站中访问才行

将打包文件放进去

这样就能正常打开了

构建文件,通过vite 进行打包 ,这个是vue自带的,也可以导入 webpack 来打包

在vite打包文件添加一段代码后,再重新打包 加的这个代码就会生成映射文件 (.map) ,造成源码泄露

打包

打包好的文件下就有又一个.map 文件

打开网址访问 ,插件工具就会有.map 文件,下载之后还原即可

如果插件不行,就直接将这个文件的地址复制后在后面加上.map

打开后鼠标右键点击文件另存为,然后将文件丢到还原的工具中

来到shuji.cmd 文件目录下将刚刚的map文件复制进去,然后右键打开命令终端,输入,cmd ,再输入shuji ...

这个是还原好的文件,源码了

4、Vue 项目

网上找几个Vue开发的源码项目,了解如何启动,目录架构,代码逻辑等

源码_网站源码_源码下载_源码之家 - 站长源码

 

 用vscode打开,然后点击... 启动终端 ,

在vueproject 目录下输入 npm install ,安装依赖

安装好后启动 ,输入 npm run dev

成功启动

 这里还不可以用PHP study打开,因为phpstudy不认识 indx.html 中的这句,要先打包构建好之后才能成功打开

构建 好后,项目就会有一个dist目录,这个是打包好的目录,现在用PHP study启动试试

成功启动

源码逻辑:

src/router 下的文件是写的路由关系 访问什么地址指向哪个文件

 system : 一些后台的东西

views : 指向文件位置

分析启动模式还有 打包时的devtool值

打包时看到时build/build.js ,那么就直接找到它去看

然后点config的时候跳到index.js里面,看到打包模式 dev 下面还有build

buil 打包时还会有一个debtool 值 ,这个就是和之前webpack那个一样,会导致源码泄露

刚才打包的就会有这个map文件

这个是设置启动模式 的

将模式改成生产模式 production 启动 查看浏览器源码中是否还会有 webpack:// 因为这里没有配置 pro的启动模式,所以弄不了

因为dev 模式下也有devtool 值,所以要先注释掉,防止干扰

改好后依旧输入 npm run dev 启动成功后打开f12查看

这里就没有看到webpack:// 了 也没有 map ;说明dev文件就是配置启动模式的

将模式改成pro 后再将devtool值注释掉,用打包构建,查看是否还会有webpack:// 和 map 文件泄露

这里就什么都没有泄露了

在将pro模式不变(测试了一下改成dev也不会泄露) 将devtool值 的注释去掉,用打包构建,查看是否还会有webpack:// 和 map 文件泄露

这里不但有webpack:// 还有 map

经测试:

用npm run dev 启动时,如果devtool值注释掉也不会有webpack:// 不注释时就会有webpack:// 但不会有map文件

用npm run dev 打包启动时 只和devtool值有关,注释掉就什么都没有,不注释就 webpack:// 和map文件都有

5、安全例子

搭建:

npm create vite@latest

cd vue-xss-demo

npm install

修改:

<template>
  <div>
    <h1>XSS 漏洞演示</h1>
    <input v-model="userInput" placeholder="输入你的内容" />
    <button @click="showContent">显示内容</button>
    <div v-html="displayContent"></div>
  </div>
</template>
 
<script>
export default {
  data() {
    return {
      userInput: '', // 用户输入
      displayContent: '' // 显示的内容
    };
  },
  methods: {
    showContent() {
      // 直接将用户输入的内容渲染到页面
      this.displayContent = this.userInput;
    }
  }
};
</script>
 
 
 
<style>
 
\#app { 
 
  font-family: Avenir, Helvetica, Arial, sans-serif;
 
  text-align: center;
 
  margin-top: 60px;
 
}
 
</style>

启动:npm run dev

测试:

<img src="x" onerror="alert('XSS')" />

修复:使用文本插值({{}})代替 v-html

其他:安全 | Vue.js

 这里直接在演示场中测试 将代码复制进去,然后在右侧输入框中输入测试代码

这里使用v-html 接收参数,再显示出来

这里换成{{}} 这个 安全写法再测试一下 输入测试代码就没有用了,只会输出,不会执行js代码了

鼠标右键点击输出的内容,点击检查 ;然后再右键选择编辑为HTML

可以看到尖括号被实体化了

2、WebPack+VueJS源码泄露

// vue.config.js

export default defineConfig({

 plugins: [vue()],

 build: {

 sourcemap: true, // 如果需要生成 Source Map

 },

})

npm run build

案例文章:

前端VUE渗透测试的一些技巧和思路

Vue Vben Admin硬编码漏洞

http://www.dtcms.com/a/337630.html

相关文章:

  • 【VUE】解决Vue路由重复导航报错
  • 嵌入式软件开发笔试题练习
  • 微算法科技(NASDAQ: MLGO)研究分片技术:重塑区块链可扩展性新范式
  • 智能代码助手革新开发效率
  • 【VUE】用EmailJS自动发送邮件到网易邮箱
  • JVM学习笔记-----类加载
  • 【深度学习4】神经网络-激活函数
  • 最短路spfa和多层图(P1073 [NOIP 2009 提高组] 最优贸易)题解
  • Linux系统等保三级安全加固执行手册(ReahtCentosKylin)
  • mq存量消息如何处理
  • STM32G4 Park及反Park变换(一)matlab建模
  • Spark 运行流程核心组件(三)任务执行
  • C语言基础:变量与进制详解
  • 直播美颜SDK架构揭秘:动态贴纸功能的实现原理与性能优化
  • 计算机网络技术-交换机配置(Day.2)
  • 戴尔易安信 PowerEdge R540服务器系统安装教程
  • 深度学习篇---卷积
  • 远程访问公司内网电脑怎么操作?3个简单通用的跨网异地连接管理计算机方法
  • IoT/透过oc_lwm2m和at源码,分析NB-IoT通信模组和主板MCU之间的通信过程
  • 自建K8s集群无缝集成阿里云RAM完整指南
  • 重温 K8s 基础概念知识系列五(存储、配置、安全和策略)
  • Kubernetes(K8s)常用命令全解析:从基础到进阶
  • kubeadm方式部署k8s集群
  • 备考国央企-算法笔记-01链表
  • HakcMyVM-Friendly
  • MongoDB Windows 系统实战手册:从配置到数据处理入门
  • Esp32基础(③旋转编码器)
  • 用一个label控件随便显示一些字(用矢量字库),然后用anim动画动态设置lable位置
  • 上海1KM人口热力数据分享
  • 音频分类模型笔记