扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
关键词:JAVA
上周,我们仔细研究了Java安全模型的结构。本周,我又深入研究了Java安全机制的另一个方面,也就是安全管理、访问控制器和访问许可。
安全管理器
安全管理是一个特别的类型,它指出一类允许访问的资源(例如,文件访问或者网络连接)。做出是否允许访问的决定,安全管理器需要分析发出请求的来源。如果访问被拒绝,将产生一个Java安全异常(java.lang.SecurityException)。否则,将以正常的方式进行调用。
每一个Java虚拟机(Java Virtual Machine)进程都只允许存在一个安全管理器。另外,您可以配置JVM,这样就可以使JVM创建安全管理器后,不再允许替换安全管理器。在这种情况下,一个安全管理器将存在于JVM的整个生命周期。许多JVM中嵌入了浏览器,它能在第一个Java程序下载到它里面之前创建一个单个的安全管理器。这样的话,电脑黑客就不能用后来的未经授权访问系统资源的Java程序来替换Web浏览默认的安全管理器了。
使用Java 2比使用以前的版本,更容易创建定制的安全管理器,因为您可以在Java 2中配置默认的安全管理器。如果您想使用默认的安全管理器,就要利用系统特性了,可以在命令行方式下让JVM知道您的决定。它必须以下面的方式进行设置:
java –Djava.security.managerMyApplication
java –Djava.security.manager=default MyApplication
java.lang.SecurityManager类是一个允许应用程序实现安全策略的抽象类,它为正在运行的JVM提供安全策略。Java.lang.System.getSecurityManager()方法将一个引用返回到当前的SecurityManager对象中。如果它不存在,则返回一个NULL值。您可以调用java.lang.System.setSecurityManager()方法设置您自己的安全管理器。如果它被禁止安装新的安全管理器,就会抛出SecurityException异常。
SecurityManager类包括许多以checkXXX()命名的public方法。每一个方法都要检查相应的资源是否被允许访问;如果它被拒绝,则要抛出SecurityException异常。
checkPermission()方法与所有的checkXXX()方法相关联。在Java 2中执行,调用任何checkXXX()方法都会调用checkPermission()这个方法。checkPermission()方法会在java.security.AccessController类中去调用同名的方法。
濠电姷鏁告慨鐑姐€傛禒瀣劦妞ゆ巻鍋撻柛鐔锋健閸┾偓妞ゆ巻鍋撶紓宥咃躬楠炲啫螣鐠囪尙绐為梺褰掑亰閸撴盯鎮惧ú顏呪拺闂傚牊鍗曢崼銉ョ柧婵犲﹤瀚崣蹇旂節婵犲倻澧涢柛瀣ㄥ妽閵囧嫰寮介妸褋鈧帡鏌熼挊澶婃殻闁哄瞼鍠栭幃婊堝煛閸屾稓褰嬮柣搴ゎ潐濞叉ê鐣濈粙璺ㄦ殾闁割偅娲栭悡娑㈡煕鐏炲墽鐭嬫繛鍫熸倐濮婄粯鎷呯粵瀣異闂佹悶鍔嬮崡鍐茬暦閵忋倕鍐€妞ゆ劑鍎卞皬闂備焦瀵х粙鎴犫偓姘煎弮瀹曚即宕卞Ο闀愮盎闂侀潧鐗嗛幊搴㈡叏椤掆偓閳规垿鍩ラ崱妞剧凹濠电姰鍨洪敋閾荤偞淇婇妶鍛櫤闁稿鍊圭换娑㈠幢濡纰嶉柣搴㈣壘椤︾敻寮诲鍫闂佸憡鎸鹃崰搴敋閿濆鏁嗗〒姘功閻绻涢幘鏉戠劰闁稿鎹囬弻锝呪槈濞嗘劕纾抽梺鍝勬湰缁嬫垿鍩為幋锕€宸濇い鏇炴噺閳诲﹦绱撻崒娆戝妽妞ゃ劌鎳橀幆宀勫磼閻愰潧绁﹂柟鍏肩暘閸斿矂鎮為崹顐犱簻闁圭儤鍨甸鈺呮倵濮橆剦妲归柕鍥у瀵粙濡歌閸c儳绱撴担绛嬪殭婵☆偅绻堝濠氭偄绾拌鲸鏅i悷婊冪Ч閹﹢鎳犻鍌滐紲闁哄鐗勯崝搴g不閻愮儤鐓涢悘鐐跺Г閸犳﹢鏌℃担鐟板鐎规洜鍠栭、姗€鎮╅搹顐ら拻闂傚倷娴囧畷鍨叏閹惰姤鈷旂€广儱顦崹鍌炴煢濡尨绱氶柨婵嗩槸缁€瀣亜閺嶃劎鈽夋繛鍫熺矒濮婅櫣娑甸崨顔俱€愬銈庡亝濞茬喖宕洪埀顒併亜閹哄棗浜鹃梺鎸庢穿婵″洤危閹版澘绫嶉柛顐g箘椤撴椽姊虹紒妯哄鐎殿噮鍓欒灃闁告侗鍠氶崢鎼佹⒑閸撴彃浜介柛瀣閹﹢鏁冮崒娑氬幈闁诲函缍嗛崑鍡樻櫠椤掑倻纾奸柛灞剧☉缁椦囨煙閻熸澘顏柟鐓庢贡閹叉挳宕熼棃娑欐珡闂傚倸鍊风粈渚€骞栭銈傚亾濮樺崬鍘寸€规洖缍婇弻鍡楊吋閸涱垽绱遍柣搴$畭閸庨亶藝娴兼潙纾跨€广儱顦伴悡鏇㈡煛閸ャ儱濡煎褜鍨伴湁闁绘ǹ绉鍫熺畳闂備焦瀵х换鍌毼涘Δ鍛厺闁哄洢鍨洪悡鍐喐濠婂牆绀堟慨妯挎硾閽冪喖鏌曟繛褍瀚烽崑銊╂⒑缂佹ê濮囨い鏇ㄥ弮閸┿垽寮撮姀鈥斥偓鐢告煥濠靛棗鈧懓鈻嶉崶銊d簻闊洦绋愰幉楣冩煛鐏炵偓绀嬬€规洟浜堕、姗€鎮㈡總澶夌处
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者