SANDBOX

Since: Apr./22nd/2004

Java ?ZLeBf

Java?dlx?ZLeBf??A???O??Kw?l?F

  1. NX[_[?NX?[hE`FbN
  2. JVM??sverifier???`FbN
  3. s?ZLeB}l[W^ANZXRg[[?錠`FbN

J????S?ANX[h??`FbN???B

NX[_[

NX[_[?NX???W?Kv??[h??A?O????BNX[_???eq?WAftHg??eq????T?i?fjB

VXeNX[_

VXeNX[_[ (java.lang.ClassLoader) ??X?FX?g?A??AXbh?ReLXgNX[_[AANZXRg[?g java.security.SecureClassLoaderA?TuNX java.net.URLClassLoader ??AAvbgT[ubg?NX[_[?Aei??????B

?NX[_[??A?NX ClassLoader p?A\bh findClass() loadClassData() I[o[Ch?BINX[hAe?NX[_?????JX^ENX[_[邱?l?B

NX[_?

ftHg??AAvP[V?NX[h?A

  1. ?VXeNX[_ loadClass() ??A
  2. ????e?NX[_?сA
  3. ?s?A findClass() ? "*.class" [hA
  4. defineClass() "*.class" ?oCgzioCgR[hjNX\z?B

ZLeB}l[W?ANZXRg[[

??R[hVXe?????AJVMR[h?s??????Th{bNXij??т?BJavavO\[X??????????B??Albg[Nz?[h?NX?Th{bNX?d???B

ZLeB}l[W

JavaTh{bNX?????C???ZLeB}l[W (java.lang.SecurityManager) ?BftHg??A[J?AvP[V??ZLeB}l[WCXg[?A????\?BAAvbg??Ai?ZLeB}l[WCXg[A[J?t@CVXe?ANZXAjAAvbg?[h?O?zXg??邱?h~??B

T[ubg???AK??|VZLeB}l[W邱??A\~X∫??R[hAT[o??邱??\?B

ZLeB}l[WCXg[??AR[h??s?????F

System.setSecurityManager(new SecurityManager());

javas?VXevpeB"java.security.manager"w?邱??l???F

>java -Djava.security.manager MyAppl

ANZXRg[[

SDK 1.2?~Java2?AZLeB}l[W??o??ANZXRg[[(java.security.AccessController)?B{I????AZLANX[_[`p[^[ZLeB}l[W??AZLeB}l[W?ZLeB[|V????ANZX`FbN鏈ANZXRg[[???B

?ANZXRg[???邱???B??A"/tmp"????t@C????`FbN???Xg1?R[hg?B

Xg1. ANZX`FbNR[h

try {
	// ??ANZX?IuWFNg??
	FilePermission perm = new FilePermission("/tmp/*", "read, write");
	// ANZXRg[??`FbN
	AccessController.checkPermission(perm);
	...
	// ?
	...
} catch (AccessControlException ex) {
	// ANZX`FbNs?O
	ex.printStackTrace();
}

AvP[V?Ajava.io.FilePermission???ANZX?A|Vt@C???eLXgt@C???邱???B?A|V[t@C?ANZX??????B



Copyright © 2004 SUGAI, Manabu. All Rights Reserved.
SEO [PR] !uO z[y[WJ Cu