在互联网上托管签名的罐子有什么安全隐患?
据我了解jar签名,一旦用户选择自动接受证书,签名jar来自您的域,从另一个域链接或托管在另一个域上无关紧要。例如,Sun使用此方法通过提供(托管)链接到驱动程序的已签名jar来为applet提供OpenGL支持。那么作为我提供的java代码的开发者和证书签名者,我应该采取什么预防措施吗?
答案 0 :(得分:3)
根据上下文,您依靠安全管理器和相关的安全策略来做正确的事情。一般情况下,除非你正在做自己的类加载器魔术,否则你不需要做任何特别的事情。如果您可以控制安全策略(例如,在Java应用程序而不是applet中),则可以授予将jar调用仅限于某些其他代码的权限。如果您依赖代码库来区分代码,则https URL更好。如果你知道访问应该来自哪里/谁来限制对网络服务器上的jar的访问也没有坏处,但可能比它的价值更麻烦。
但是,您应该始终牢记您的API的来电者可能不是您的代码,并且可能是恶意的。因此,在威胁建模中,您应该考虑恶意用户如果能够以某种方式访问您的代码公开的API所提供的功能,他们可以做什么。安全管理器应该检查调用堆栈以防止这种情况。但是,例如,如果你签名的jar有一个方法LaunchMissiles()......你可能想要询问用户他们是否确定无论如何。您也可能想要对用户进行身份验证。
您也不一定要依赖用户在任何安全警告上单击右键,特别是如果它引用了证书和URL等 - 大多数用户属于以下两类之一:因为他们不在任何警告上点击确定不理解它,以及那些因为不理解而点击取消任何警告的人。