从零开始学习网络安全渗透测试之基础入门篇——(三)APP架构小程序H5+Vue语言Web封装原生开发Flutter

news2024/11/26 17:25:03

从零开始学习网络安全渗透测试之基础入门篇——(三)

#APP架构&小程序&H5+Vue语言&Web封装&原生开发&Flutter

确保App和小程序的安全性是移动应用开发中的重要环节。比如,代码混淆、数据加密、安全审计、权限管理、API安全等隐患。

一、APP的架构

APP是指应用程序的软件架构,它定义了应用程序的各个组件、它们之间的关系以及它们与硬件的交互方式。一个良好的APP架构可以确保软件的可维护性、可扩展性和可复用性。以下是几种常见的APP架构介绍:

  1. MVC(Model-View-Controller)架构模式
    • 模型(Model):负责业务逻辑和数据处理,如数据库读写。
    • 视图(View):负责展示数据,提供用户界面。
    • 控制器(Controller):作为模型和视图之间的桥梁,处理用户的输入并作出响应。
  2. MVVM(Model-View-ViewModel)架构模式
    • 模型(Model):与MVC中的相同,负责数据逻辑。
    • 视图(View):负责显示界面。
    • 视图模型(ViewModel):负责暴露数据和命令来管理视图的状态和行为,实现视图与模型的解耦。
  3. MVP(Model-View-Presenter)架构模式
    • 模型(Model):同上,处理业务逻辑。
    • 视图(View):负责显示界面,但比MVC中的视图更智能,可以处理一些简单的逻辑。
    • 呈现器(Presenter):处理用户交互,从模型获取数据,准备视图需要显示的信息。
  4. VIPER(View-Interactor-Presenter-Entity-Router)架构模式
    • 视图(View):展示用户界面。
    • 交互器(Interactor):包含业务逻辑。
    • 呈现器(Presenter):管理视图的显示逻辑。
    • 实体(Entity):代表应用程序的数据模型。
    • 路由(Router):处理模块之间的导航。
  5. Clean Architecture
    • 实体(Entities):应用的核心业务逻辑。
    • 用例(Use Cases):将输入转换为输出的业务规则。
    • 接口适配器(Interface Adapters):将用例输出的数据转换为用户界面所需的格式。
    • 框架和驱动(Frameworks and Drivers):包括Web框架、数据库、UI等。
      每种架构模式都有其适用的场景和优缺点。例如,MVC适合简单应用,但可能导致Controller过于臃肿;MVVM适合复杂的UI逻辑,有助于实现数据绑定和视图模型的复用;VIPER适合大型项目,可以更好地分离关注点,但可能会引入过多的文件和类。
      在这里插入图片描述

APP的开发方式

APP的开发方式主要可以分为以下几种:

  1. 原生开发(Native Development)
    • iOS原生开发:使用苹果的Swift或Objective-C语言,以及Xcode开发环境。
    • Android原生开发:使用Java或Kotlin语言,以及Android Studio开发环境。
      原生开发的优势在于可以充分利用设备的硬件性能,提供最佳的用户体验和性能。不足之处在于需要为不同平台分别开发,成本较高。
  2. 跨平台开发(Cross-Platform Development)
    • React Native:由Facebook开发,使用JavaScript进行编程,能够实现真正意义上的“一次编写,处处运行”。
    • Flutter:由Google开发,使用Dart语言,拥有自己的渲染引擎,可以创建美观且性能良好的应用。
    • Xamarin:由微软支持,使用C#语言进行开发,可以共享大量代码库。
    • Apache Cordova/PhoneGap:使用HTML、CSS和JavaScript进行开发,通过封装成本地容器在设备上运行。
      跨平台开发的优势在于可以节省开发成本和时间,代码可复用性强。但可能无法完全达到原生应用的性能和用户体验。
  3. 混合开发(Hybrid Development)
    • 结合了原生开发和Web技术的开发方式,通常使用HTML、CSS和JavaScript编写应用的核心部分,并通过原生容器或Web视图在设备上运行。
    • 常用的框架包括Ionic、Onsen UI等。
      混合开发的优势在于可以快速迭代,同时能够调用原生功能。不足之处在于性能和用户体验可能不如原生应用。
  4. Web应用(Web App)
    • 完全使用Web技术(HTML、CSS、JavaScript)开发,用户通过浏览器访问。
    • 可以通过PWA(Progressive Web Apps)技术让Web应用具有类似原生应用的特性,如离线工作、推送通知等。
      Web应用的优势在于跨平台特性极强,无需安装,易于更新。但受限于浏览器环境和网络条件,体验可能不如原生应用。
  5. 小程序开发
    • 如微信小程序、支付宝小程序等,使用特定的框架和API,在特定的平台上运行。
    • 适合快速开发轻量级应用,依赖于超级APP的生态。
      每种开发方式都有其适用的场景和目标用户群体。在选择开发方式时,需要考虑应用的性能要求、开发成本、团队技术栈、目标平台和用户需求等因素。

三、小程序

小程序是一种不需要下载安装即可使用的应用,它实现了应用的即搜即用的概念,用户通过微信、支付宝、百度等平台即可快速打开使用。以下是关于小程序开发的一些基本内容:

小程序的特点:

  • 快速加载:基于平台的原生能力,小程序可以实现快速加载和打开。
  • 易于分享:用户可以轻松地将小程序分享给朋友或群聊。
  • 平台生态:小程序依附于超级APP,可以充分利用其流量和生态。
  • 开发门槛低:相较于原生APP,小程序的开发成本和门槛更低。

开发流程:

  1. 注册开发者账号:在相应的平台(如微信、支付宝、百度)上注册开发者账号。
  2. 创建小程序:在开发者平台创建小程序,获取到小程序的AppID。
  3. 开发环境搭建:下载并安装官方提供的开发工具,如微信开发者工具。
  4. 编写代码:使用官方提供的框架和API进行开发。
    • WXML(微信小程序标记语言):用于描述页面结构。
    • WXSS(微信小程序样式表):用于描述页面样式。
    • JavaScript:用于处理逻辑。
    • JSON:用于配置页面。
  5. 调试与测试:在开发工具中进行代码调试和功能测试。
  6. 提交审核:将开发完成的小程序提交至平台审核。
  7. 发布上线:审核通过后,小程序即可上线供用户使用。
    在这里插入图片描述

四、H5+Vue语言

H5+Vue开发是指使用HTML5和Vue.js框架进行Web应用开发的一种方式。以下是关于这种开发模式的详细介绍:

H5与Vue.js简介

  • HTML5:是HTML的最新标准,提供了一系列新的元素和API,用于构建更加丰富和强大的Web应用。
  • Vue.js:是一个渐进式JavaScript框架,用于构建用户界面,特别是单页应用(SPA)。它易于上手,且灵活性强。

开发环境搭建

  1. 安装Node.js:Vue.js项目通常使用Node.js包管理器npm或yarn来管理依赖。
  2. 安装Vue CLI:Vue CLI是Vue官方提供的命令行工具,用于快速搭建Vue项目。
    npm install -g @vue/cli
    
  3. 创建Vue项目:使用Vue CLI创建一个新的Vue项目。
    vue create my-vue-project
    
  4. 启动开发服务器:进入项目目录,启动开发服务器。
    cd my-vue-project
    npm run serve
    

开发流程

  1. 项目结构:Vue CLI会生成一个标准的项目结构,包括src目录下的componentsviewsassets等。
  2. 编写组件:使用Vue的单文件组件(.vue文件),包含模板(template)、脚本(script)和样式(style)。
  3. 路由管理:使用Vue Router管理页面路由。
    import Vue from 'vue'
    import Router from 'vue-router'
    Vue.use(Router)
    const router = new Router({
      routes: [
        // 定义路由
      ]
    })
    
  4. 状态管理:使用Vuex进行应用的状态管理(如果项目复杂度较高)。
  5. 数据交互:使用axios或fetch进行HTTP请求,与后端API进行数据交互。
  6. 样式处理:可以使用预处理器如Sass或Less来编写CSS。

特点与优势

  • 跨平台:基于Web技术,可以在多种设备和浏览器上运行。
  • 组件化开发:Vue.js鼓励开发者使用组件化的方式构建界面,提高代码复用性和可维护性。
  • 响应式数据绑定:Vue的双向数据绑定机制使得状态管理更加直观和高效。
  • 易上手:Vue.js的API设计简洁,对初学者友好。

五、Web封装

Web封装通常指的是将Web应用(通常是HTML、CSS和JavaScript)打包或封装成可以独立运行的应用程序的过程。这样做的主要目的是为了能够在桌面环境或移动设备上提供类似于原生应用的体验。以下是几种常见的Web封装方法:

1. 桌面应用封装

  • Electron:使用Web技术来构建跨平台的桌面应用程序。Electron结合了Chromium和Node.js,允许开发者使用HTML、CSS和JavaScript来创建桌面应用。
  • NW.js(原名Node-Webkit):与Electron类似,它也允许开发者使用Web技术构建桌面应用。
  • Neutralinojs:一个轻量级的跨平台应用开发框架,它提供了更小的应用体积和更快的启动时间。

2. 移动应用封装

  • Cordova(Apache Cordova):通过将HTML、CSS和JavaScript封装在原生容器中,允许开发者使用Web技术来创建移动应用。
  • Ionic:结合了Cordova和Angular,提供了一个强大的UI组件库,用于构建高性能的移动应用。
  • Capacitor:由Ionic团队开发,是一个跨平台的应用开发框架,与Cordova类似,但提供了更现代的API和更好的性能。
  • React Native:虽然React Native不直接封装Web应用,但它允许使用React的编程模式来构建原生应用,同时可以使用Web视图来封装现有的Web内容。

封装过程

  1. 准备Web应用:确保你的Web应用能够在浏览器中正常运行,并且没有依赖外部资源。
  2. 选择封装工具:根据你的需求和目标平台选择合适的封装工具。
  3. 配置封装环境:安装必要的开发工具和依赖库。
  4. 封装应用:使用封装工具提供的命令或脚手架来创建应用包装,并将Web应用内容嵌入。
  5. 调试和优化:在模拟器和真实设备上进行测试,确保应用表现良好,并根据需要进行优化。
  6. 打包和分发:使用封装工具生成可分发的安装包,然后将其发布到应用商店或直接分发给用户。

注意事项

  • 性能:封装后的应用性能可能不如原生应用,特别是在复杂或资源密集型的应用中。
  • 安全:确保应用不包含任何敏感信息,并采取适当的安全措施。
  • 兼容性:需要测试应用在不同操作系统和设备上的兼容性。
  • 更新:考虑应用的更新机制,确保用户可以轻松地获取最新版本。
    Web封装为开发者提供了一种快速将Web应用转换为桌面或移动应用的方法,它降低了跨平台开发的复杂性和成本。然而,选择合适的封装方法需要根据具体的项目需求和应用目标来决定。

六、原生开发

APP原生开发是指使用特定平台提供的工具、编程语言和API来开发应用程序。以下是对原生APP开发的详细介绍:

原生开发的特点:

  1. 性能:原生应用可以直接调用操作系统的功能和硬件资源,因此在性能上通常优于跨平台和混合应用。
  2. 用户体验:原生应用可以提供更加流畅和一致的用户体验,因为它们遵循平台的设计指南和交互模式。
  3. 功能访问:原生应用可以无限制地访问设备的所有功能,如相机、GPS、加速计等。
  4. 分发和销售:原生应用可以通过官方应用商店分发,如Apple App Store和Google Play Store。

原生开发的平台:

iOS原生开发:
  • 编程语言:Swift或Objective-C
  • 开发环境:Apple的Xcode
  • API和框架:iOS SDK,包括UIKit、Core Data、Core Graphics等
  • 设计指南:Apple的Human Interface Guidelines
Android原生开发:
  • 编程语言:Java或Kotlin
  • 开发环境:Google的Android Studio
  • API和框架:Android SDK,包括Android UI、SQLite、OpenGL等
  • 设计指南:Material Design

原生开发的流程:

  1. 需求分析:明确应用的目标用户、核心功能和预期效果。
  2. 设计:创建应用的用户界面和交互设计,通常使用Sketch、Adobe XD、Figma等设计工具。
  3. 开发环境搭建:安装必要的开发工具和SDK。
  4. 编码:根据设计图和功能需求编写代码。
  5. 调试:在模拟器和真实设备上进行测试,修复发现的问题。
  6. 优化:对应用进行性能和体验优化。
  7. 打包:将应用打包成可分发的格式,如iOS的.ipa文件或Android的.apk文件。
  8. 发布:将应用提交到官方应用商店进行审核和发布。

注意事项:

  • 平台差异:不同平台有不同的开发语言和工具,需要分别学习和开发。
  • 维护成本:由于需要为每个平台单独开发,维护成本相对较高。
  • 更新周期:需要跟随操作系统的更新周期,及时更新应用以保持兼容性。

优势:

  • 性能最优化:原生应用可以针对特定平台进行性能优化。
  • 用户界面一致性:原生应用可以提供与操作系统一致的用户界面和体验。
  • 功能全面性:可以充分利用设备的硬件和软件功能。
    原生开发是创建高性能、高质量移动应用的首选方法,尤其适用于对性能和用户体验有较高要求的应用。然而,它也要求开发者具备相应的技术知识和开发经验。

七、渗透测试思路

1.原生类:

  • 反编译:提前源码、提前源码中的资产信息、进行常规渗透
  • 抓包:抓数据包提取资产、资产类型常规测试

2.封装类

  • 进行常规的web渗透

3.H5&Vue类

前后端分离:

  • JS渗透
  • 接口安全渗透
  • 框架安全分析

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

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

相关文章

[240727] Qt Creator 14 发布 | AMD 推迟 Ryzen 9000芯片发布

目录 Qt Creator 14 发布Qt Creator 14 版本发布,带来一系列新功能和改进终端用户可通过命令行方式查看此新闻终端用户可通过命令行方式安装软件: AMD 推迟 Ryzen 9000芯片发布 Qt Creator 14 发布 Qt Creator 14 版本发布,带来一系列新功能…

IntelliJ IDEA 中安装 Groovy 插件 添加 Groovy SDK

一、在 IntelliJ IDEA 中安装 Groovy 插件可以按照以下步骤进行: 打开 IntelliJ IDEA: 启动 IntelliJ IDEA。 打开插件市场: 进入 File -> Settings(在 macOS 上是 IntelliJ IDEA -> Preferences)。在左侧菜单中…

信号、电源、网线、传感器防雷,SPD系列防雷器全覆盖!

信号、电源、网线、传感器防雷,SPD系列防雷器全覆盖! SPD 系列防雷器是一种安装于被保护设备一侧的产品,旨在保护电子设备免受雷击、电磁脉冲、过压过渡冲击等造成的设备损坏。该产品广泛应用于工业控制、安全监测、网络通讯、交通电压等行业…

高速板开源工程的学习(一)

泰山派NAS-原理图和PCB设计经验分享-塞塞哇 (saisaiwa.com) BGA扇出的时候千万小心,导线到焊盘的距离大于0.1MM,千万小心,不然会寄寄的,这个在设计规则里面可以设置: 这种就容易造成阻焊开窗的误判,是很不规范的&…

力扣第三十七题——解数独

内容介绍 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 数独…

《破解验证码:用Requests和Selenium实现模拟登录的终极指南》

两种模拟登录方式(图形验证码) 超级鹰 打码平台,用于识别验证码 requests模拟登录 from chaojiying import Chaojiying_Client import requests from requests import Session from lxml import etree #获取图片信息 def get_pic_info(img_name):chaojiying Ch…

贪心算法总结(2)

一、买卖股票的最佳时机 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int maxProfit(vector<int>& prices) {int miniINT_MAX;int ret0;for(int&price:prices){//遍历的时候&#xff0c;我们随时去更新最小的值&#xff0c;然后让每一位…

AI音乐大模型背后的技术突破、版权诉讼和资本蛋糕

音乐&#xff0c;对你来说&#xff0c;是什么&#xff1f; 音乐对于我们中的许多人来说&#xff0c;是生活中不可或缺的一部分。它不仅仅是娱乐&#xff0c;更是一种情感的表达和交流方式。音乐是一种语言&#xff0c;可以用来表达感受&#xff0c;描绘作曲家想要传达的某种情…

fatal: refusing to merge unrelated histories

出现本地仓库和远程仓库的代码合并不兼容问题&#xff0c;解决方法&#xff1a; 添加--allow-unrelated-histories&#xff0c;让git允许提交不关联的历史代码。 成功提交&#xff1a;

云计算概念以及与云服务的区别

1.云的概念 1.1 什么是云&#xff1f; “云”在计算机科学和信息技术领域通常指“云计算”&#xff0c;即通过互联网提供计算资源&#xff08;如服务器、存储、数据库、网络、软件、分析等&#xff09;的模式。用户可以按需访问和使用这些资源&#xff0c;而无需管理和维护实际…

抓包工具——wireshark的使用

​ 什么是wireshark wireshark是一个数据包捕捉程序。和linux下的tcpdump&#xff0c;以及sniffer&#xff0c;Fidder等软件功能类似。按理说&#xff0c;我们的计算机中的网卡设备只会将发给本机的数据包传输到上层进行解析&#xff0c;而其他的数据包会进行丢弃&#xff0c;…

Bert文本分类和命名实体的模型架构剖析

文章目录 介绍Bert模型架构损失计算方式BertForSequenceClassificationBertForTokenClassification Bert 输出结果剖析例子 参考资料 介绍 文本分类&#xff1a;给一句文本分类&#xff1b; 实体识别&#xff1a;从一句文本中&#xff0c;识别出其中的实体&#xff1b; 做命名…

万界星空科技灯具行业MES系统:点亮生产管理的未来

在快速迭代的灯具行业中&#xff0c;高效、精准的生产管理是企业保持竞争力的关键。万界星空科技推出的灯具行业MES&#xff08;制造执行系统&#xff09;系统&#xff0c;以其强大的功能和完善的管理体系&#xff0c;正成为众多灯具生产企业的首选解决方案。本文将重点介绍万界…

构建高并发Web服务:Gunicorn与Flask在Docker中的完美融合

1. 引言 在数字化时代&#xff0c;Web服务的性能和可靠性对于任何在线业务的成功至关重要。随着用户基数的增长和业务需求的扩展&#xff0c;高并发处理能力成为了衡量一个Web服务质量的关键指标。高并发Web服务不仅能够确保用户体验的流畅性&#xff0c;还能在流量激增时保持…

抖音矩阵管理系统开发:全面解析与推荐

在数字时代&#xff0c;短视频平台如抖音已经成为人们生活中不可或缺的一部分。随着内容创作者数量的激增&#xff0c;如何高效地管理多个抖音账号&#xff0c;实现内容矩阵化运营&#xff0c;成为了众多创作者关注的焦点。今天&#xff0c;我们就来全面解析抖音矩阵管理系统的…

Android 生成Excel并导出全流程

前言 最近接到需求&#xff0c;要在安卓上离线完成根据数据生成Excel文件&#xff0c;但搜到了都不是能立马使用 例如 // implementation org.apache.poi:poi:3.17 // implementation com.alibaba:easyexcel:4.0.1 这两最大的问题是专用于java的&#xff0c;如果And…

【SpringBoot】7 数据库(MySQLMyBatis)

MySQL 前提&#xff1a;本地有安装 MySQL 。 连接 使用工具 Navicat Premium &#xff0c;或者 IDEA 自带的 DB 工具&#xff0c;或者其他能连接 MySQL 数据库的工具都可以。 1&#xff09;创建 MySQL Data Source 2&#xff09;根据本地配置连接上 MySQL&#xff0c;点击…

移动UI:排行榜单页面如何设计,从这五点入手,附示例。

移动UI的排行榜单页面设计需要考虑以下几个方面&#xff1a; 1. 页面布局&#xff1a; 排行榜单页面的布局应该清晰明了&#xff0c;可以采用列表的形式展示排行榜内容&#xff0c;同时考虑到移动设备的屏幕大小&#xff0c;应该设计合理的滚动和分页机制&#xff0c;确保用户…

Android 软键盘挡住输入框

Android原生输入法软键盘挡住输入框,网上各种解法,但不起效。 输入框都是被挡住了,第二张图的小点,实际就是输入法的光标。 解法: packages\inputmethods\LatinIME\java\res\values-land config.xml <!-- <fraction name="config_min_keyboard_height"&g…