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内。

相关推荐
CappuccinoRose16 小时前
滚动交互体系
前端·javascript·交互·html5·1024程序员节
时空节拍AI数字人16 小时前
博物馆数字人讲解系统设计:知识库 schema、展项联动协议与时序控制
java·服务器·前端·人工智能·ai·语音识别
吴建旭 智宅焕16 小时前
智能家居全国交付中前端工具与后端基础设施的系统集成架构:报价入口与交付兜底的闭环设计
前端·架构·智能家居
夏天要喝冰可乐17 小时前
Codex 写 Three.js 大屏实录:800 行代码,和一条画反的弧线
前端·aigc
欣欣之王来了17 小时前
v-bind语法糖::属性名的简写方式
前端·学习·架构·项目·vue3教程
2601_9540056217 小时前
# ricon SVG 编辑器:工业图元的“军火工厂“
前端·物联网·数学建模·架构·编辑器·制造
codeniu17 小时前
一个人,5天,从想法到上线:我用 TRAE 跑通全链路开发的完整实录
前端
shaibdoio17 小时前
RPA自动化获客怎么落地?瞬维AI评论区工程实践
前端·自动化·rpa·长沙瞬维ai
计算机魔术师17 小时前
807亿亏配900%留存:ANT招股书把AI的拧巴摊在桌上了
前端
未来之窗软件服务18 小时前
web网络请求竞态问题与取消方案-东方仙盟
前端·状态模式·仙盟创梦ide·东方仙盟·网络取消