范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

浅谈一下小程序的运行机制以及安全机制

  接触小程序有一段时间了,总得来说小程序开发门槛比较低,但其中基本的运行机制和原理还是要懂的.  了解小程序的由来
  在小程序没有出来之前,最初微信WebView逐渐成为移动web重要入口,微信发布了一整套网页开发工具包,称之为 JS-SDK,给所有的 Web 开发者打开了一扇全新的窗户,让所有开发者都可以使用到微信的原生能力,去完成一些之前做不到或者难以做到的事情。
  但JS-SDK 的模式并没有解决使用移动网页遇到的体验不良的问题,比如受限于设备性能和网络速度,会出现白屏的可能。因此又设计了一个增强版JS-SDK,也就是"微信 Web 资源离线存储",但在复杂的页面上依然会出现白屏的问题,原因表现在页面切换的生硬和点击的迟滞感。这个时候需要一个 JS-SDK 所处理不了的,使用户体验更好的一个系统,小程序应运而生。  快速的加载 更强大的能力 原生的体验 易用且安全的微信数据开放 高效和简单的开发 小程序与普通网页开发的区别
  小程序的开发同普通的网页开发相比有很大的相似性,小程序的主要开发语言也是 JavaScript,但是二者还是有些差别的。  普通网页开发可以使用各种浏览器提供的 DOM API,进行 DOM 操作,小程序的逻辑层和渲染层是分开的,逻辑层运行在 JSCore中,并没有一个完整浏览器对象,因而缺少相关的DOM API和BOMAPI。  普通网页开发渲染线程和脚本线程是互斥的,这也是为什么长时间的脚本运行可能会导致页面失去响应,而在小程序中,二者是分开的,分别运行在不同的线程中。  网页开发者在开发网页的时候,只需要使用到浏览器,并且搭配上一些辅助工具或者编辑器即可。小程序的开发则有所不同,需要经过申请小程序帐号、安装小程序开发者工具、配置项目等等过程方可完成。  小程序运行机制
  小程序启动会有两种情况,一种是「冷启动」,一种是「热启动」。假如用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需将后台状态的小程序切换到前台,这个过程就是热启动;冷启动指的是用户首次打开或小程序被微信主动销毁后再次打开的情况,此时小程序需要重新加载启动。
  小程序没有重启的概念 当小程序进入后台,客户端会维持一段时间的运行状态,超过一定时间后,会被微信主动销毁 小程序更新机制
  小程序冷启动时如果发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,即新版本的小程序需要等下一次冷启动才会应用上。 如果需要马上应用最新版本,可以使用 wx.getUpdateManager API 进行处理。  小程序安全
  作为开发者,无论是前端开发者,还是后端开发者,了解常见的安全问题,以及常见的解决方案是非常必要的。  1.反编译
  非常多原创的微信小程序,被技术人员通过反编译技术或者工具,将完整的代码反编译出来。这项技术自小程序发布初期到现在都一直存在。多数开发者反编译项目用作学习,但也有不少公司,直接利用反编译市场上的现有的小程序,快速搭建属于自己的产品,谋取利益。
  对于这样的问题,微信官方并没有做出太多反制措施。毕竟小程序模拟的是浏览器,一般的前端项目,在浏览器端右键即可查看源码,在控制台可以查看网络请求等更加详细的信息。
  在小程序代码中,不要写入敏感数据,将敏感数据全部放在服务端。客户端要使用时,通过接口进行请求。反编译后的代码都是些前端样式,这些并没有太重要。毕竟一般的前端程序员复刻一个小程序项目,也只是时间问题。  2.接口鉴权
  开发者很容易通过抓包,第三方工具等方式获取到小程序的网络请求。小程序开发者应当在后台接口被调用时,对本次调用进行权限校验,包括自建后台接口和云函数,否则容易发生越权问题和数据泄漏。
  对于敏感数据、开发能力相关接口需要在后台进行鉴权,通常可检验openid,IP地址,自定义登录态等信息。
  鉴权的逻辑应该放在后台进行,不应在小程序中以隐藏页面、按钮等方式来代替。
  常见的鉴权示例如下:  //自建后台鉴权 function actionDelete(){     $item_id = $_POST["item_id"];      $openid = $_POST["openid"];     $ip = $_SERVER["REMOTE_ADDR"];     $user_role = $_SESSION["user_role"];     if ($openid === "xxx" &&         $ip === "192.168.0.101" &&         $user_role === "admin") {             // 进行删除操作             // ...             return 0;         } else {             // 记录非法请求             // ...             return -1;         } }  //云函数鉴权 exports.main = async (event, context) => {    const { OPENID, APPID, UNIONID } = cloud.getWXContext();    if (OPENID === "xxx") {          // 进行删除操作          // ...    } else {          // 记录非法请求          // ...    } }  3.代码管理
  当使用 git、 svn 等版本管理工具时,会产生 .git 等目录。某些编辑器或软件也会在运行过程中生成临时文件。若这些目录或文件被带到生产环境,则可能发生源码泄漏。  4.内容安全
  对于包含用户输入内容,如评论、修改昵称、头像等功能。开发者需要自行调用信息过滤接口,判定内容是否有违规内容。对于没有配置相应功能的小程序,会被警告然后限制搜索。我之前开发过的一款社区类目小程序就因为这个原因,被封禁了好久。  5.敏感数据安全
  对于存储在本地的敏感数据,如用户信息,openid等数据,开发者应当对敏感数据自行加密存储。  小程序双线程架构
  什么是双线程架构?
  一条线程负责处理逻辑层一条线程负责处理渲染层。线程之间通过native层通信。  为什么要选择双线程架构?
  1.最重要的点: 这个一个基于安全于管控的方案
  2.其次:比纯web更好的交互体验,
  3.原生版本迭代更为便捷 小程序选择的是webview+原生组件的形式,hybrid方式,既享受到了webview页面的低门槛和在线更新,️可以使用部分流畅的native原生组件,并且最重要的是空对开发的内容进行一定程度按的管控,同时在安全问题从设计层面就予以了解决。  为什么说小程序有着相对较好的交互体验呢?
  首先说小程序的交互体验肯定是比不上原生app的,app的响应速度肯定是最快的,相对指的的h5 web,网页开发的渲染线程和脚本线程是互斥的,二者是共享一个线程的,也就是说在运行脚本线程的时候可能会让页面失去响应,所以这也是为什么我们在开发网页的时候需要将script脚本的引入放在body的后面然后winow.onload去知道已经渲染完的节点。而在小程序中渲染线程和逻辑(脚本)线程相互独立,不能直接干扰对方,渲染线层和逻辑线程可以同时运行。联想一下,这是不是从设计层面就规避了react16推出fiber架构所为了解决的最重要的问题问题(一次大的更新任务会长时间占据着当前线程的资源,导致页面无法响应带来的交互问题!)。  在版本迭代上小程序又有哪些优势呢?
  我们都知道原生渲染的体验优势,这也是为什么会出现夸端框架的weex,react native ,flutter的框架去直接生成原生应用的方式来进行开发,但是小程序是依赖于宿主环境的,小程序的发版不可能说随着微信的大版本去迭代,如果是这样我觉得就和小程序分质治理的理念不合了,也会有很多的弊端,并且也不能发挥web的优势。
  那么web的优势是什么呢?--答案是在线更新。--(有啥bug随时修完!甚至产品经理都感知不到!),小程序也是在线更新,但是小程序比h5多了另外一项优势--底层资源的动态注入。h5的脚本资源都是通过请求获取的,获取完了之后还要解析,然后再去运行实际的业务层面的代码。而在小程序中在初始化的时候,native(原生层)就会将WXSDK(设备信息,hls流视频处理工具,基础版本库等)动态的加载注入到新打开的页面中,由于小程序的pageFrame(快速渲染设计)技术,在后续打开的页面中,直接读取缓存中准备数据,直接省去的解析的过程。小程序这些优化直接的效果是(包体积变小,减少了网络请求sdk的时间。)
  小程序现在版本迭代的模式下,忽略微信审核的环节的话,基本上可以做到99%用户的在线更新。但是并不完全,在有新版本迭代的情况下,虽然微信不支持强制更新,但是我们可以在交互层面上,强提示交互让用户更新。但是不知何种原因(估计是用户微信版本和小程序基础库版本的问题)无法做到100%,这是从后台监控的sdk所反馈的数据。  新生物种:以小程序为载体的企业轻应用方案
  自2017年上线以来,小程序就一直是互联网巨头的"兵家必争之地",腾讯、阿里、百度、字节等都期望借助小程序的能力建设来丰富自家的生态,将自家的主流平台打造成为超级App。
  但,时至今日,互联网巨头的蜂拥而至却反而为小程序开发者和品牌商家提供了更多元的选择,使得旗下的小程序应用不需要局限在单一平台生态之下。
  虽然互联网大厂并未将这部分小程序运行能力技术开放出来,但是我们也不必望而生羡,市面上早就推出了类似的技术能力,我们一般称之为小程序容器技术。
  今天要给大家分享的也正是目前在 GitHub 很热门的前端容器技术 —— FinClip 。
  只需简单集成 FinClip SDK , 即可在 iPhone、Android、Windows、Linux、macOS、统信等平台下的应用中运行你的小程序。
  而且 FinClip SDK 极其轻量,应用在集成后安装包的体积仅仅增大了不到 3MB。
  下面这个功能特性对于研发人员应该会比较友好, FinClip 支持微信小程序语法 WXML,也就是说微信小程序代码可以直接在 FinClip 复用,无需再二次开发,体验与微信端保持一致。
  FinClip 还自研了一个 小程序 IDE 开发工具,界面与微信小程序的开发工具类似,自带调试和真机预览,简单易上手。
  你可以在这个 FIDE 里面,对现有项目进行二次开发,扩展功能和接口。
  同时,它还支持 小程序一键转换成 App,可以将已有小程序代码导出为 IOS 与 Android 中可用的工程文件,并上架至各应用市场 。由于导出的工程文件自动集成了 FinClip SDK ,所以直接拥有小程序的运行能力,后续可在这个 APP 上继续上架更多小程序,自建自己的小程序生态。
  并且 FIDE 中还包含各类扩展插件和接口(支付、人脸识别、音视频、OCR 等),开发者可自主勾选所需的支持插件,从而增强所生成 App 原生能力。
  在小程序开发前,需要了解相应的问题,以预防可能出现的问题。在开发完成后,也要对可能出现问题的地方进行排查,防止出现不要用的损失。
  如果这篇文章对你有帮助,欢迎点赞关注评论!多谢啦

戈尔巴乔夫走了戈尔巴乔夫们还在苏联的首任也是最后一任总统戈尔巴乔夫走了。他的逝世让苏联历史画上了最后的句号。戈尔巴乔夫,凭着他的新思维,最终把苏联送上了末路。戈尔巴乔夫说新思维的核心是承认全人类的价值高于一切,全域旅游蓬英楼的鲅鱼饺子,馋了饺子,是天津人钟爱的美食之一尤其到了每年的后半年每逢节日,必有饺子的身影也因此,天津的饺子馅儿非常丰富有三鲜水饺西葫羊肉水饺津味素水饺这些味道鲜美的水饺受到了不少人的喜爱其中还有一飞凡R7将在9月27日正式上市采用高阶智驾方案E电园从相关渠道获悉,飞凡R7有望在9月27日正式上市,新车已经在此前的各大车展中亮相,随后于10月下旬开启交付,有望主打25万元级以上市场。外观方面,飞凡R7的设计更加犀利,狭长广西这条高速公路很奇特,以网红景点命名,完美串联多个旅游区在纵横交错的广西高速公路网规划布局中,旅游高速公路作为一种比较主流的交通连接方式,对促进地方文化旅游业发展的作用是显而易见的。直接以景区命名的旅游高速公路更是少见,更有利于区域旅游女排迎来大变动!蔡斌大胆做出决定,主攻手新增1人女排迎来大变动!蔡斌大胆做出决定,主攻手新增1人中国女排现在即将迎来世锦赛的比赛,而球迷也都知道,目前中国女排的实力,相比较郎平时期有很大的变化,主要是有方面的原因,首先第一方面就女排三消息52岁赖亚文或高升,蔡斌收神助攻,张常宁发新动态最近中国女排正在备战世锦赛,而在与此同时,期间女排内部发生三个非常备受关注的消息,对于女排未来的发展的影响非常重大,接下来和大家逐一分享一下。首先第1个消息,分享一下52岁的赖亚文战国第一背锅侠赵括长平之战四十万人被埋这事儿,全是我的锅?长平之战四十万人被埋这事儿,全是赵括的锅?说起战国时期的赵括,大家的第一反应一定是,我知道,这货就是个夸夸其谈,只懂得纸上谈兵的饭桶官二代。当年要不是赵孝成王昏庸不查,中了秦国的反南财快评日元韩元对美元贬值的动因及其影响近日,日元韩元对美元贬值备受关注。韩日货币贬值并非孤例,近一段时期以来,全球主要货币兑美元的汇率都在下跌,首当其冲的原因是美联储确定无疑的继续加息政策。美国东部时间8月26日上午1计划因为一起床,过一会儿,老二就醒,不分春夏秋冬,搞得寒冰很是头大,刚开始以为是自己给老二带来的安全感不够,寒冰认真地思考,回忆,找原因,并决定了改善的方案,一段时间过去了,也没有改善华为Mate50和华为Mate50Pro的区别是什么?一图告诉你华为Mate50Pro相比华为Mate50相比主要有以下几个差别1潜望式长焦镜头差距。Pro版本的像素更大素质更高,标准版本为5倍光变和50倍数字变焦,Pro版本为3。5倍光变和1欧冠疯狂夜!阿扎尔1传1射复活哈兰德20场25球创纪录切尔西垫底北京时间9月7日凌晨,2223赛季的欧冠小组赛终于迎来了第一个比赛日的较量,曼城客场40完胜塞维利亚,皇马客场30轻取凯尔特人,巴黎圣日耳曼主场21战胜尤文图斯,多特蒙德30拿下哥
什么是爱情的模样?视频加载中如果问爱情是什么模样,爱情可能随处可见,也许是一个久别重逢的拥抱一个久违的亲吻一口老伴做的饭菜一口副驾喂的零食一把倾斜的雨伞一支有力的臂膀但是,爱情往往不只这部分,还有不女人不管年纪多大,买大衣都要远离黑色!多穿这5个年轻色秋冬季节的衣橱里当然少不了大衣的身影,高级百搭又保暖,一件单品轻松搞定多种搭配场合。但是穿大衣除了要选择适合自己的版型,选对配色也很重要!今年推荐大家尝试这几款年轻色大衣,既能打造真正见过世面的女人,穿大衣不会配打底裤,看三木母女就知道在你们的印象当中,那些真正见过世面的女人,都是什么模样呢?是穿衣得体精致,还是气质出众魅力四射?其实穿衣打扮跟气质息息相关,只要懂得穿搭,气质自然也就随之而来。什么才算是真正的见过犹太人这么聪明,为何历史上从未建立过大帝国?2022年,全球犹太人约1460万2000万,分布广流动性大,确切的人口可能是1700万上下。其中以色列656万696万,美国570万1000万,法国45万60万,加拿大3955万不管夫妻还是情人,有这三种感觉,说明你们的感情会很长久图来自网络,侵权请联系删除人生实苦,命运坎坷,所幸我们还有爱值得期待,还有爱人值得陪伴,在爱里所感悟到的一点一滴都是生命中的至高灿烂。作家桐华曾说真正爱一个人,就算把自己的全世界都大牌水乳哪个好用?兰蔻调节水油平衡,海蓝之谜修护还抗老对于爱好水乳护肤的女生来说,水乳功效要符合皮肤需求是一方面,更重要的是使用肤感要好。水乳虽然看起来是简单的爽肤水和乳液组合护肤形式,但是不同品牌可以将自家水乳做出不同的使用感受,也张兰和男友人走机场!穿貂皮铅笔腿抢眼,一身富贵却不显豪橫汪小菲和大S两个人的事情霸占了热搜很久,张兰也因为这件事非常出圈,受到了更多的关注。现如今64岁的张兰状态保持的很好,跟男友现身机场,身穿黑色貂皮大衣,搭配紧身打底裤,笔直的腿,身最美的短裙复古搭配,你学会了吗?夏天休闲搭配,可以尝试女士风格的穿着。例如1。一件短袖衬衫加一条短裤。短袖衬衫可以是一件纯色的带有印花图案的或者是格纹图案的衬衫,搭配一条棕色牛仔材质的短裤更加休闲时髦。2。另一个美国车市,再购买率最低的汽车品牌居然是雷克萨斯和日产?美国市场调查企业SPGlobalMobility推出了以流出率和流入率为基础的各汽车品牌统计值。流出率是指下次购买车辆时,选择其他品牌而不是现有品牌的消费者比率。流入率是指首次购买1月国产新能源SUV销量榜比亚迪包揽前三,AIONY哪吒V不足5千导读根据乘联会发布的新能源汽车销量数据来看,1月份国产新能源SUV销量榜也正式出炉,本期共有40款车型入榜,但销量过万的车型只有三款,而且均被比亚迪汽车所包揽。具体来看,宋PLUS南昌武商MALL一众奢侈品品牌曝光,今年上半年将开业出品联商网搜铺网撰文高天图片南昌武商MALL实景图在接手南昌苏宁广场后的一年半时间,关于武商集团在湖北省外的首个商业项目南昌武商MALL的进展始终备受行业关注。尤其是作为目前江西首