现在你可以阅读很多关于代码注入,漏洞利用,缓冲区,堆栈和堆溢出等的信息,从而导致注入和运行代码.我想知道这些东西与Java有什么关系.
我知道,Java语言中没有指针.但是JVM是否在堆和/或堆栈中组织数据?我知道没有eval函数(比如在PHP中)所以你不能轻易地将输入用作Java代码.我不太确定在字节码级别上会发生什么.
我认为XSS是可能的,例如在Java EE应用程序中,当没有输入被过滤时.但这不是一个JavaScript注入,因为注入的代码在浏览器中而不是在JVM中运行?
那么哪些代码注入可以用java而不是?这对其他Java平台语言也是如此吗?
提前致谢.
java程序本身几乎不容易受到代码注入的攻击.但是,支持该应用程序的所有本机代码都容易受到所有不同类型的代码注入的攻击 - 这包括应用程序或其库中的JVM和所有本机代码部分.
此外,还有一些事情需要考虑:
可以使用java作为其他系统的网关的任何东西:
SQL注入
XSS(最终只是JavaScript注入)
如果java程序本身就是某种解释器/编译器,那么可能会将代码注入解释语言/编译程序(这包括将程序用作java编译器......)
当然,如果您可以让java程序将文件写入包含代码的磁盘(无论是本机,java还是其他),您可以通过其他方式(可能是您应用中的不同漏洞)执行它,操作系统或其他应用程序) - 这不是直接代码注入,但实际上非常相似.