日期:2014-05-20  浏览次数:20734 次

关于java安全管理器的问题
如果写了一个本地方法,可以读取、修改文件,而java调用这个本地方法来读取、修改文件的话,安全管理器还会生效吗,如果不生效这个是不是有不安全因素啊
------解决方案--------------------
需要验证;
和你想用firefox修改百度的主页类似;
------解决方案--------------------
本地方法是神马语言?
------解决方案--------------------
当然会生效,java安全管理器的作用在于用户在执行某个操作时,调用安全管理器来进行check,有此权限则通过,没有则抛异常。
------解决方案--------------------
结果是 loadLibrary 方法本身也受安全管理器管理
------解决方案--------------------
该回复于2014-04-03 14:08:18被管理员删除

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

结果是 loadLibrary 方法本身也受安全管理器管理

那比如有loadLibrary 的权限的话,是不是就可以越过文件check权限,直接调用本地方法读取文件了,
或者这种控制必须要设计好,不能有loadLibrary 的权限。
这些权限不都得自己控制的吗,每开一个权限自然就得考虑到相应的风险。
native方法我是觉得应该不受它管理,不过之后不是还有文件系统权限嘛。

还有上面说到的,check是根据策略文件来控制的,如果用户修改了策略文件呢,或者有什么办法能保护策略文件不被修改呢
比如,
grant codeBase "file:${{dir}}/*" {
permission java.security.FilePermission ........;这里可能控制只能读取某个目录下的文件
};

使用者如果修改了策略文件,
grant codeBase "file:${{dir}}/*" {
permission java.security.AllPermission;
};
那么不就拥有所有权限了吗,这种情况要怎么控制呢
上面不说了嘛还有文件系统权限呢,启动程序的用户没有这个文件的写入权限就改不了。像windows下Java的默认安装路径,整个文件夹普通用户只能读取和执行,管理员组才可以完全控制

如果有文件系统权限,那是不是即使java策略设置可以操作所有目录,java程序仍然还是访问不了啊?
是的
------解决方案--------------------
很高深哦。/