在与Java开发人员讨论时,我经常听到这个问题。他们(java开发者)总是问你的选择是否有安全性,我不知道该怎么回应。 谁能告诉我Java安全意味着什么?
答案 0 :(得分:4)
很快:在java中,您可以遇到不同类型的“安全性”(给予这个词更广泛的解释)。
但我不认为在没有更多背景的情况下,问“语言X有安全性”是没有意义的。
答案 1 :(得分:3)
Java不允许访问底层系统,因此抽象提供了对内存中缓冲区溢出的安全性(例如)。使用本机语言,您可以访问系统并使用更多功能,但是您可能会引入错误,这些错误可能会为攻击者提供全面的系统控制。
此外,Applet和Webstart应用程序还有一个沙箱,可防止网站所有者访问个人数据或控制您的桌面。
答案 2 :(得分:3)
嗯,正如ccheneson指出的那样,它们可能意味着许多事情:
所以告诉他们他们的问题太宽泛,无法得到有意义的答案。他们可能只是试图给你留下深刻的印象......
答案 3 :(得分:2)
告诉Java开发人员语言没有“安全性”。平台(库和框架)可能提供API,可能用于提高安全性(或被误用或用于使事情变得不必要复杂,这总是会降低安全性)。
无论使用何种语言或平台,应用程序及其部署和运行方式都可能是安全的。安全性是一种质量属性,就像性能或可维护性一样。编程语言是其中的一个次要方面;平台API是一个稍微大一点的方面,但不是大多数主流主流平台之间的区别。
答案 4 :(得分:1)
我怀疑你正在谈论的Java开发人员主要考虑的事情是自动数组和字符串边界检查 - 像C和汇编程序这样的低级语言没有,这导致非常常见的编程错误导致极其严重安全漏洞。
Java的设计确实几乎完全阻止了这种错误,因为它会自动检查数组边界。但这并不意味着“Java具有安全性” - 许多其他类型的攻击(如跨站点脚本和SQL注入)仍然存在,而且许多编写得很糟糕的Java应用程序也容易受到攻击。
对于几乎所有其他现代高级语言来说也是如此。 Java在20世纪90年代中期引入并且C ++是其主要竞争对手时,对于缓冲区溢出而言是“安全的”是一项重要的成就(并且在市场营销中非常强调)。如今,随着许多其他语言的广泛使用,它不再是一件大事了。
答案 5 :(得分:0)
他们可能会参考Java SE Security。所以我想通过“有安全性”,它们意味着一组API来增强通信,数据的安全性......
答案 6 :(得分:0)
我认为他们正在讨论在SecurityManager的控制下运行应用程序的可能性(Sandbox概念的演变)。可以将SecurityManager配置为禁止某些类型的权限,例如访问(部分)文件系统,打开连接,终止VM,......
这是只是“平台安全”,还有更多与安全相关的主题 请参阅此technotes,特别是一般安全性部分(Java Security Overview和Security Architecture)
答案 7 :(得分:0)