gpt4 book ai didi

java - 有没有办法阻止类(class)被反射(reflection)?

转载 作者:搜寻专家 更新时间:2023-11-01 01:18:16 25 4
gpt4 key购买 nike

我在自学 Java 的安全 API 的同时正在制作一个密码类(class)。这个类里面会有一些敏感的东西,比如加密类型之类的。如果有人有动机,所有这些都可以反射(reflection)性地检索。

我以前用过反射来绕过私有(private)变量和方法(对此并不自豪),所以我知道这是可以做到的。有没有一种方法可以完全防止反射作用于整个类——甚至其中的一部分,或者这是否违背了 Java 的——更具体地说是安全 API 的设计?

最佳答案

这称为隐蔽性安全 - 如果已知的加密算法细节会导致它不安全,那么它就已经不安全了。

不,你不能阻止人们反射(reflection)你的类(class)。在最坏的情况下,他们可以加载一个 JNI 库,该库将直接进入 JVM 堆并从那里读取内存内容(或写入它们)!如果您的代码在他人控制下的机器上运行,那么它所做的任何事情都不是真正私密的。

如果您自己编写一个 JNI 库,它可以被反编译和逆向工程(此外,这在许多司法管辖区的过去判例法中都是明确合法的)。

即使算法的工作原理为所有人所知,也只需确保算法安全,或者(更好!)使用已经编写好的实现,该实现是 Java 语言的一部分。

如果您担心的是 key Material 的泄露,请使用 Java 方法访问 keystore 。如果您真的很偏执,请将后备存储强制为 PKCS11 硬件 token 。

关于java - 有没有办法阻止类(class)被反射(reflection)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9215893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com