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

相关推荐
excel1 小时前
研究 Vue 3 源码的收获
前端·vue.js
可乐鸡翅yeah_3 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
lerhxx3 小时前
AI 应用如何高效优雅地恢复中断?—— "连接解耦 + 状态持久化"
前端·javascript
计算机魔术师3 小时前
METR 演示 AI 智能体如何篡改 Inspect 评估记录以掩盖不当行为
前端
前端snow4 小时前
ai agent --- 异步处理之 Rabbit MQ
前端
念何架构之路4 小时前
zap扩展生态与总结
java·前端·数据库
独孤九剑打醒他4 小时前
【原创开源】【概念设计】源 - 栅 - 漏 - 栅 - 源 横向双栅 MOS,低压交流多值逻辑芯片探索
前端·其他·架构·开源·硬件工程
mantou1325 小时前
我给 AI Agent 做了个「油猴」:让 Claude Code / Codex 直接用你已登录的浏览器
前端·javascript·后端
默_笙5 小时前
🍕 一个主编、三个工种、两本手册:搭一支 AI 调研队
前端·javascript
纸片人5 小时前
Blender 建模 + Three.js 展示:和 AI 一起做一个光储充超充站数字孪生大屏
前端