Avatar billede jespersahner Nybegynder
21. november 2006 - 13:41 Der er 9 kommentarer og
1 løsning

"java.security.AccessControlException" fra samme host

Jeg forsøger at læse en binær fil fra en applet. I første omgang tester jeg funktionaliteten lokalt, og min applet startes op med http://localhost/applet.html

Filen tilgås på flg. måde fra applet'en:
new URL("http://localhost/binary.bin")

I min applet skriver jeg <applet codebase="http://localhost" ..>.

Burde jeg ikke kunne læse en fil/URL fra samme host, som applet'en er startet op fra?

Jeg kører i første omgang Java source level 1.4.
Avatar billede arne_v Ekspert
21. november 2006 - 14:58 #1
maa vi se hele applet tag og hele exception teksten ?
Avatar billede jespersahner Nybegynder
21. november 2006 - 16:10 #2
->arne_v: Ja, kommer her:

<applet codebase="http://localhost"
        code="Readarray.class"
        name="MyApplet"
        height="100"
        width="100">
</applet>

- og exception-tekst:
java.security.AccessControlException: access denied (java.io.FilePermission http:\localhost\binary.bin read)

    at java.security.AccessControlContext.checkPermission(Unknown Source)

    at java.security.AccessController.checkPermission(Unknown Source)

    at java.lang.SecurityManager.checkPermission(Unknown Source)

    at java.lang.SecurityManager.checkRead(Unknown Source)

    at java.io.FileInputStream.<init>(Unknown Source)

    at java.io.FileInputStream.<init>(Unknown Source)

    at Readarray.read(Readarray.java:62)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

    at java.lang.reflect.Method.invoke(Unknown Source)

    at sun.plugin.javascript.invoke.JSInvoke.invoke(Unknown Source)

    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

    at java.lang.reflect.Method.invoke(Unknown Source)

    at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)

    at sun.plugin.liveconnect.PrivilegedCallMethodAction.run(Unknown Source)

    at java.security.AccessController.doPrivileged(Native Method)

    at sun.plugin.liveconnect.SecureInvocation$2.run(Unknown Source)

    at java.security.AccessController.doPrivileged(Native Method)

    at sun.plugin.liveconnect.SecureInvocation.CallMethod(Unknown Source)

    at sun.plugin.liveconnect.SecureInvocation.access$300(Unknown Source)

    at sun.plugin.liveconnect.SecureInvocation$CallMethodThread.run(Unknown Source)

java.security.PrivilegedActionException: java.lang.reflect.InvocationTargetException

    at java.security.AccessController.doPrivileged(Native Method)

    at sun.plugin.liveconnect.SecureInvocation$2.run(Unknown Source)

    at java.security.AccessController.doPrivileged(Native Method)

    at sun.plugin.liveconnect.SecureInvocation.CallMethod(Unknown Source)

    at sun.plugin.liveconnect.SecureInvocation.access$300(Unknown Source)

    at sun.plugin.liveconnect.SecureInvocation$CallMethodThread.run(Unknown Source)

Caused by: java.lang.reflect.InvocationTargetException

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

    at java.lang.reflect.Method.invoke(Unknown Source)

    at sun.plugin.javascript.invoke.JSInvoke.invoke(Unknown Source)

    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

    at java.lang.reflect.Method.invoke(Unknown Source)

    at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)

    at sun.plugin.liveconnect.PrivilegedCallMethodAction.run(Unknown Source)

    ... 6 more

Caused by: java.lang.NegativeArraySizeException

    at Readarray.read(Readarray.java:87)

    ... 16 more
Avatar billede jespersahner Nybegynder
21. november 2006 - 16:22 #3
->arne_v: Det må have noget at gøre med, at jeg bruger FileInputStream og ikke URL. Hvis jeg i stedet indkapsler i URL, kan jeg godt få det til at virke.
Avatar billede arne_v Ekspert
21. november 2006 - 16:29 #4
ja

FileInputStream er til lokal access - UTL til net access
Avatar billede jespersahner Nybegynder
21. november 2006 - 17:01 #5
->arne_v: Fint, jeg kan altså læse en vilkårlig fil ind, blot jeg indkaspler den i en URL og den i øvrigt er placeret på samme host som applet'en. Er det et sikkerhedsproblem? - eller sørger indkaspling i URL'en for, at der ikke er et sikkerhedsproblem her?
Avatar billede lborupj Nybegynder
21. november 2006 - 19:14 #6
du kan kun loade en fil fra localhost såfrem du har signet din applet. En URL kan også godt pege på lokale ressourser såsom file:///c:/autoexec.bat
Avatar billede arne_v Ekspert
24. november 2006 - 02:16 #7
hvis applet og fil hentes samme sted fra bør der ikke være noget problem
hverken med Java security eller reel sikkerhed
Avatar billede jespersahner Nybegynder
24. november 2006 - 15:55 #8
->arne_v+lborupj: Som Arne skriver er der ikke noget problem i at læse fra samme sted, som applet'en load'es fra, blot data "pakkes ind" i en URL. Som jeg læste et sted: "En applet må ikke snakke med fremmede, og hvis den ringer hjem, skal det ske via fastnet" :-)
Avatar billede jespersahner Nybegynder
24. november 2006 - 15:56 #9
->arne_v: Smid gerne et svar.
Avatar billede arne_v Ekspert
24. november 2006 - 23:18 #10
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester