双线程到底解决了什么先给小程序团队的底层框架
发表时间:2023-10-24 18:44:13
文章来源:炫佑科技
浏览次数:119
菏泽炫佑科技 菏泽炫佑小程序开发 菏泽炫佑app制作 炫佑科技
双线程到底解决了什么先给小程序团队的底层框架
首先为小程序团队的双线程设计点个赞。 关于双线程,还可以回顾一下《小程序底层框架》。
H5的隐患
要知道Web技术是非常开放和灵活的。 开发可以使用脚本随意操作DOM。 这会导致以下问题:
随意跳转网页并更改界面上的任何内容
开发可以使用脚本随意跳转到网页或更改界面上的任何内容。 当然,恶意攻击者也可以利用这种便利。
获取页面数据
小程序还提供了可以显示敏感数据的组件,包括用户昵称、头像、性别、地理位置等信息(未经用户授权)。
如果开发可以操纵DOM,就意味着他们可以随意获取用户的敏感信息。
常见前端漏洞
开发普遍重视的安全漏洞包括前端的XSS和CSRF。 XSS通过注入脚本来达到特定目的,同时利用CSRF。
双线程设计中过滤了XSS,稍后会讨论CSRF。
难以控制
为了解决控制和安全问题,需要禁用小程序:
如果你想一一禁止,浏览器界面的灵活性和丰富性会让你很容易错过一些危险的界面。 并且浏览器内核也在不断更新。 也许下一个版本会添加一个可能会给这个系统带来漏洞的接口,这是无法完全避免的。
安全逻辑层
如何彻底解决这些问题呢? 以下是一些给您的提示:
没错,就是沙盒环境。 通过提供一个纯粹的解释和执行环境,这个环境没有浏览器相关的接口,当然也不需要担心操作DOM、跳转等问题。 iOS下使用内置框架,下使用环境(老版本由腾讯x5内核提供,新版本由v8提供)。
我们回顾一下小程序的双线程是什么样子的:
如果客户端系统有解释引擎,则可以创建一个单独的线程来执行。 在这个环境中,只执行与小程序业务逻辑相关的代码。 与界面渲染相关的任务都扔到线程中,通过逻辑层代码来渲染哪些界面。
将开发的JS逻辑代码放到单独的线程中运行。 因为不在线程中,所以这个环境没有任何接口。 自然,开发无法直接操作DOM,也无法动态改变界面或捕获它。 页面数据。
同时,小程序不支持动态加载脚本,XSS漏洞自然可以被无缝利用。
审查机制的控制
关于审核机制,故事要从公众号说起。
的快速发展
随着公众号的出现和繁荣,使用频率越来越高。 许多企业、小型企业和外包公司已经开始创建H5页面。 各种H5活动页面、小商城、小测试、小游戏满天飞。
当微信逐渐成为移动Web的重要入口时,微信就有了相关的JS API。
2015年初,微信发布了一整套网页开发工具包,开放了拍照、录音、语音识别、二维码、地图、支付、分享、优惠券等数十个API,称为JS-SDK。
这个时候,网页开发就可以利用微信原生的能力来完成以前不可能或者很难做到的事情。
难以控制的JSSDK
随着越来越多的人使用JSSDK,在微信上做坏事的人也越来越多。 有的人制作假红包,有的人诱导分享,有的人假冒官方活动。 他们会利用JSSDK的分享能力,变相反裂变,分享给大家。 一群人或朋友圈。
由于JSSDK是根据域名来授予api权限的,运营商屏蔽某个域名后,会立即使用其他域名继续做坏事。 注册新域名的成本非常低。
小程序审核机制
为了保证小程序的质量并符合相关规范,小程序的发布需要经过审核。 只有经过审核的小程序才可以向公众发布。 同时,出现问题时,小程序将被下架、禁用。
另外,每个微信小程序都需要提前设置一个通讯域名。 小程序只能通过网络与指定域名进行通信,包括普通的HTTPS请求、上传文件、下载文件以及通信,参考框架-网络。 这些通信域名也必须注册。
同时小程序必须使用HTTPS来发起网络请求。 请求时,系统会验证服务器域名使用的HTTPS证书。 如果验证失败,则无法成功发起请求。
这些各种限制和管理模式进一步保护了用户的数据和隐私安全。
安全登录机制
相信在座的前端开发都知道CSRF安全漏洞。
危险的
跨站请求攻击(CSRF),简单来说,就是攻击者利用一些技术手段,诱骗用户的浏览器访问他已经认证过的网站,并执行一些操作(比如发送邮件、发送消息,甚至是财产操作)例如转账)。 并购买商品)。 由于浏览器已经过身份验证,访问的网站将作为真实用户操作运行。
这是利用了Web用户认证的一个漏洞:简单的认证只能保证请求来自用户的浏览器,但不能保证请求本身是用户自愿发出的。 通常的罪魁祸首是浏览器的登录状态。
除了检查字段进行预防之外,更有效的方法是使用token。 小程序做同样的事情。
小程序登录
小程序可以通过微信提供的官方登录能力轻松获取微信提供的用户身份,并在小程序内快速建立用户体系。 参考官方时序图:
通过在小程序中调用wx.login(),可以获得一段code作为用户的登录凭证(有效期5分钟)。 在开发服务器后端,开发可以使用代码来交换金额等信息(代码只能使用一次)。
可靠的代码
假设现在有一个接口,请求拉取我们业务侧微信用户ID 1的个人信息。 那么黑客就可以遍历所有的ID,拉走整个业务端的所有个人信息数据,这就会给业务带来问题。 存在很大的安全隐患。
由于代码会在5分钟后过期,因此黑客如果想要冒充用户,就必须在5分钟内耗尽所有ID双线程到底解决了什么先给小程序团队的底层框架,然后去开发服务器换取真实的用户身份。 即使优惠码生成时间尚未过期,一次信息交换成功后,该优惠码也会立即失效。 显然外包微信小程序开发,黑客想要获取用户信息,必须付出非常高昂的成本。 同时,开发服务器还可以通过一些技术手段来检测5分钟内某个IP频繁发送的登录请求,从而拒绝这些请求。
需要保护
开发后台已获取wx.login()生成的微信登录凭证代码。 这时就可以将代码发送到微信服务器来换取微信用户身份。 为了让微信服务器确保携带代码换取身份信息的人是对应的小程序开发,向微信服务器的请求必须同时带上AppId和AppId。
AppId和AppId是微信识别开发的重要信息。 AppId是公开信息。 泄露AppId不会带来安全风险,但开发的隐私数据不应该泄露,开发需要保护好。
参考
结论
小程序作为一个开放平台,不仅提供微信祝福和体验祝福能力供开发使用,还为用户和开发提供很多安全保障。
也许有人会说这是以牺牲开发的开放性为代价实现的,但我认为这是一个有灵魂的平台。