RN热更新安全问题

背景

个人开发一款可以播放视频的app,使用expo+rn,由于不开发后端服务器,后端采用网络资源,通过爬虫以插件的形式进入注入,这难免存在安全问题

方式

  • 使用new Function
  • 使用eval

问题

1. 易获得全局上下文

例如

javascript 复制代码
"use s"
const { parseDocument } = context.htmlparser2
const that = this
return {
    name: '问题插件',
    version: '0.0.1',

    //首页
    getHomeList: async function (page) {
        console.log(that, '插件环境');

        try {
            const fs = require('react-native-fs')
            console.log(fs, '插件环境----');
            return []

        } catch (error) {
            console.log(error);
            
            return []

        }

    },
    //详情页
    getDetailData: async function (id) {
        // const res = await request.get(`/anime/${id}`)
        return []
    },
    //播放地址
    getPlayUrlData: async function (url) {
        return []
    },
    //搜索
    getSearchData: async function (keyWord) {
        return []
    },
   
};

这样内部执行就获得了上下文,易获取内部缓存隐私。

解决方案

使用严格模式,在读取代码后往头添加

ts 复制代码
 const useStrict = `"use strict"\n` + code;

这样解决通过require获取rnfs或者expo-file-system库进行本地写入,防止通过axios下载木马病毒后通过上面库写入本地app内。

相关推荐
Zeroplucky38 分钟前
Binder 线程池耗尽案例:持锁同步调用 VHAL 导致 SystemUI 卡顿或 ANR
前端
Zeroplucky40 分钟前
从 registerContentObserver 剖析 Android Binder 流程
前端
Yinlin12442 分钟前
深入悬浮组件实现
前端
yangzheui43 分钟前
nvue页面事件穿透到下层元素解决办法
前端
杉氧43 分钟前
从 Modifier 到 Flexbox:React Native 布局与样式设计哲学
android·前端·react native
比老马还六1 小时前
Bipes-Blockly项目二次开发/硬件功能-LED灯条(十一)
前端·嵌入式硬件·硬件工程
circuitsosk1 小时前
智能体任务拆解与执行:基于ReAct+Plan-and-Execute框架的行业Skill构建实录
前端·javascript·python·react.js·react·llm agent·智能体编排
daols881 小时前
vue 表格vxe-table 实现紧凑型表格的方式
前端·javascript·vue.js
恋猫de小郭1 小时前
Flutter 多窗口支持类型和 API 介绍
android·前端·flutter