为什么Java被标记为"安全"语言?

Mar*_*cus 18 java security

我想这是一个普遍的问题,但我正在通过java(SE/ME)的入门课程和研究材料声称java经常被用于"安全目的".然而,它没有通过声称java包含良好的安全性来解释它们的含义.

它是黑客证明吗?它是否会产生高度稳定的软件?什么?

从我的观点(目前)来看,安全性是由开发人员编写代码而不是语言本身?

Lie*_*yan 32

恕我直言,这是一个非常误导性的声明.在Java中,您无法访问超出范围的数组,并且您没有指针,因此在Java中无法利用堆栈损坏或缓冲区溢出等几个安全漏洞.但Java本身并不比任何其他语言更安全; 它只是存在导致安全漏洞的错误的机会较少.实际上,这减少了安全漏洞,但说Java安全是完全误导的.

  • 通常,当人们说Java是"安全"时,正是由于你说的原因 - 超出绑定的数组和糟糕的指针算法是C代码中的两个常见安全错误. (4认同)
  • 从某种意义上说,它更安全,可能会降低运行Java VM(沙箱)系统的危险.Lie Ryan是什么,它不会使应用程序本身更安全.即你仍然可以进行SQL注入,如果你自己伪造你的SQL查询并且没有正确地逃避它并且类似的"安全"错误 (2认同)
  • 因此,摆脱过去 **THE** 最常见的安全问题(缓冲区溢出/溢出)原因并不是本质上比 C 更安全?您在自己的答案中自相矛盾:*“Java 本质上并不比任何其他语言更安全”*(错误)和 *“实际上,这减少了安全漏洞”*(正确)。那么你选择什么?**NOT** 因为您没有防范所有安全问题,而您并不比其他语言更安全。祝你好运逃脱 VM Lie Ryan ;) (2认同)

Mic*_*rdt 13

在某些方面,有两件事使Java比其他语言"更安全":

  • 自动数组边界检查和缺少手动内存管理会导致某些类别的编程错误,这些错误通常会导致严重的安全漏洞(例如缓冲区溢出).大多数其他现代语言都有这个功能,但是在Java首次出现时占主导地位(仍然是主要的)应用程序开发语言的C和C++却没有.
  • 安全管理理念使得它比较容易在一个"沙箱",防止他们从做任何伤害他们正在运行的系统上运行的Java应用程序.这在早期推广Java方面发挥了重要作用,因为Applet被设想为一种无处不在的,安全的方式来拥有客户端Web应用程序.


And*_*mas 7

Java提供安全保障和工具,例如:

  • 没有缓冲区溢出漏洞
  • 字节码验证
  • 不同代码库的安全权限
  • 与安全相关的API

有关更多详细信息,请参阅Oracle的"Java安全性概述".


tho*_*ulb 5

由于 Java 编译为字节码,然后在虚拟机内运行,因此它无法像本机编译的程序那样访问其运行的计算机。

  • 从技术上讲是不正确的,因为您可以使用 JNI 访问对系统的本机调用,并且 java 程序仍然可以对系统造成严重破坏 - 删除文件、执行命令行参数等。 (3认同)
  • 这与编译为 IL 并在 .net 运行时中运行的 .net 代码相同。 (2认同)