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

时间:2010-10-08 19:21:18

标签: java security

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

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

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

11 个答案:

答案 0 :(得分:30)

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

答案 1 :(得分:13)

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

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

答案 2 :(得分:6)

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

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

有关详细信息,请参阅Oracle的"Java Security Overview"

答案 3 :(得分:3)

因为Java编译为bytecode然后在Virtual machine内运行,它无法像本机编译的程序一样访问它运行的计算机。

答案 4 :(得分:3)

认为Java比C更安全的一般原因是因为它为您处理内存管理。在其他语言中,程序员分配自己的内存并且通常无法正确执行,导致缓冲区溢出等。当然,Java VM仍然可能包含相同类型的错误,但随着时间的推移,它经过了很好的测试,与每个用户编写的程序不同

所以在这方面,它更安全。但你仍然可以编写不安全的代码,因为没有任何语言可以保护你不用编写明显错误的代码。

答案 5 :(得分:3)

有几种语言,尤其是C和C ++,有一类错误,可以允许在利用时执行任意代码 - 这种错误很常见,而且很容易制作。这些错误通常是某种形式的buffer overflow

Java和许多其他语言/平台消除了这类错误(禁止VM本身可能存在可利用的错误),许多人声称这些错误使其更加安全。

答案 6 :(得分:2)

这是营销)

答案 7 :(得分:2)

  1. 这是在一些采访中提出的基本问题,为什么java因为java是安全的,因为java是安全的,因为在jvm中存在一个名为安全管理器的软件 如果出现问题,他们的责任是处理所有事情。因此控制/阻止系统

  2. 另一件事是它在源代码和系统(os)之间创建了接口,没有任何用户允许做错的事情。

答案 8 :(得分:2)

Java编译器将Java代码转换为字节代码(.class文件),然后这些字节代码由Java虚拟机(JVM)运行。 JVM是一个解释器,安装在每台客户端计算机上,通过Internet更新最新的安全更新。执行此字节代码时,JVM可以处理安全性。因此,据说java比其他编程语言更安全。

答案 9 :(得分:1)

通用类型(或泛型)与C ++中的模板表面上有相似之处,包括语法和预期用例(例如容器类)。但是相似之处只是肤浅 - Java语言中的泛型几乎完全在编译器中实现,编译器执行类型检查和类型推断,然后生成普通的非泛型字节码。这种实现技术称为擦除(编译器使用泛型类型信息来确保类型安全,然后在生成字节码之前将其擦除),这会产生一些令人惊讶的,有时令人困惑的后果。虽然泛型是Java类中类型安全的一大进步,但学习使用泛型几乎肯定会在此过程中提供一些头痛(有时甚至是诅咒)的机会。

答案 10 :(得分:0)

**

>为什么Java是安全的Lanquage

**

原因: 1.由于java程序在自己的虚拟机沙箱中运行 2. Java(OOPs)中的数据隐藏使其成为安全语言之一。 也许有些观点也存在,但现在无法回想起来。

3.不使用指针防止未经授权访问内存块。

4.无法访问内存管理

  1. 访问控制功能
  2. 异常处理
  3. 使用最终关键字
  4. 包java.security提供安全框架的类和接口
  5. 每个阶段都启用了Java安全性: 最终关键字 安全类加载 jit安全经理 字节码验证 自动内存管理 JSSE java加密扩展 电子签名 jaas:java身份验证和授权服务

    如果您已经了解此事,请点赞