《Java学习指南》—— 1.6 应用和用户级安全性

    xiaoxiao2024-01-15  169

    本节书摘来异步社区《Java学习指南》一书中的第1章,第1.6节,作者:【美】Patrick Niemeyer , Daniel Leuck,更多章节内容可以访问云栖社区“异步社区”公众号查看。

    1.6 应用和用户级安全性

    要有足够的能力来完成一些有用的事情,这与拥有全部能力来完成可能的任何事情之间存在着细微的界限。Java为一个安全环境提供了基础,在此不可信代码可以得到“检疫”、管理和安全地执行。不过,除非你满足于将该代码永远置于一个小小的黑箱中,并且只是独立地运行而不与外界打任何交道,否则就必须对其授权,允许它至少能够访问一些系统资源,这样才能真正有用。每一种访问都既有风险,又有收益。例如,在Web浏览器环境中,授权一个不可信(未知)applet访问你的窗口系统有一个好处,即它可以显示信息,并允许你以一种有用的方式进行交互。与此连带产生的风险则是该applet可能显示一些无意义的东西,甚至是讨厌的或者攻击性的内容。

    在一种极端的情况下,运行应用的简单做法是使应用得到一个资源,即计算时间,对此它可能会很好地加以利用,也可能会轻易地将其浪费。不可信的应用会浪费你的时间,甚至会尝试一种拒绝服务攻击(denial of service),这种情况很难避免。而在另一种极端情况下,一个功能强大而且可信的应用应当能够访问各种系统资源(例如,文件系统、进程创建、网络接口等);但恶意应用若拥有这些资源则会带来严重的破坏。这说明,安全性问题相当重要(有时还相当复杂),必须得到解决。

    在某些情况下,只是要求用户对请求做出“同意”与否的回答,这是一种可以接受的做法。Java语言提供了工具来实施你想要的任何安全策略。然而,这些策略将会是什么样,最终取决于相关代码的身份认证和完整性有多么敏感。这是数字签名的用武之地。

    数字签名以及证书等技术都是用以验证数据确实来自于它所声称的来源,而且在发送过程中未经篡改。如果Boofa银行对其支票簿applet做了签名,你可以验证此签名,从而确定该applet确实来自于该银行而非假冒,而且也未被修改过。因此,你可以通知浏览器信任有Boofa银行签名的applet。

    本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

    最新回复(0)