java - Java 如何处理作为输入参数的易受攻击的代码?
问题描述
当作为用户输入传递时,jvm 如何处理像“System.exit()”这样的易受攻击的代码?
解决方案
Java 没有像eval()
JavaScript 那样动态执行 Java 代码的功能。
只有两种加载代码的替代方法:
- 如果应用程序允许从用户定义的文件(例如使用 ClassLoader)加载已编译的代码(Java 类)
- 如果应用程序
ObjectInputStream
用于反序列化数据(以及包含的相应类字节码)。
这两种方式都容易受到恶意代码的攻击,因此加载的代码可以执行任何操作。
Java 提供的唯一方式是安全管理器——主要用于 Java 小程序。但是,恕我直言,这种方式已经过时了,因为总有一种方法可以绕过安全管理器的限制。Java 小程序如今已过时的主要原因之一。
推荐阅读
- windows - 如何通过 IF 条件比较 WMIC 的返回值?
- javascript - 如何在threejs中获得没有子骨骼的骨骼尾端的世界位置
- html - 如何使调整器更大,(更大的可点击区域)?
- javascript - 显示来自 Laravel8 响应的错误消息
- typescript - 用于类型映射的流到 Typescript 的转换
- node.js - 有没有办法删除斜杠命令的响应 [Discord.js]
- node.js - 如何使用 Node-CSV 乘以和跳过行管道流
- gensim - 为什么来自两个 Word2Vec 模型的相同键的两个嵌入向量如此相似?
- python - 安装程序。如何将所有 python 代码放入 zip 文件而不是放入嵌入式 PYZ
- reactjs - 有没有办法使用 react native 下载图像,我目前有一个 base64 字符串用于使用 android 下载管理器(没有 url!)?