我不知道我是否没有看到明显的东西......我正在阅读这些关于安全编码的建议:http ://www.javaworld.com/article/2076837/mobile-java/twelve-rules-for-developing -more-secure-java-code.html
如果我们不将类或方法声明为 final,攻击者可能会在字节码中覆盖或扩展它们,因此他可以将自己的恶意代码放入字节码中,但我不清楚攻击是如何进行的完全的。我的意思是,如何让程序使用扩展类而不是原始类......例如,如果我们有一个程序:
public class TheClass {
public void someAction(char[] userPassword) {
//some action
}
}
public class Program {
public static void main(String[] args) {
TheClass theClass=new TheClass();
theClass.someAction(readPasswordFromUserInput());
}
}
并且攻击者创建了另一个恶意类:
public class TheMaliciousClass extends TheClass{
public void someAction(char[] userPassword) {
//some action
//some malicious action
//send password to attacker's website
}
}
如何欺骗程序、用户或任何你需要欺骗的东西,以便程序使用 TheMaliciousClass 而不是 TheClass?也许我没有正确理解这一点,攻击是以其他方式完成的......无论如何,我会很感激任何解释。非常感谢!!
在 OWASP 中,他们还谈到了“终结性”中的这个安全漏洞:https ://www.owasp.org/index.php/Java_leading_security_practice