18. november 2004 - 22:01
Der er
22 kommentarer og 1 løsning
access denied (java.util.PropertyPermission user.home read)
java.security.AccessControlException: access denied (java.util.PropertyPermission user.home 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.checkPropertyAccess(Unknown Source) at java.lang.System.getProperty(Unknown Source) at KeyReader.init(keyreader.java:14) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Jeg får denne fejl nå jeg kører min signed applet. Hvad skal jeg gøre for at den ikke gør det mere? Kode: import java.awt.*; import javax.swing.*; import java.io.*; import java.net.*; public class KeyReader extends JApplet { String s; public void init() { try { String separator = System.getProperty("file.separator"); String serfil = getParameter("serfil"); FileReader fil = new FileReader(System.getProperty("user.home") + File.separator + serfil); System.out.println(System.getProperty("user.home") + File.separator + serfil); s = ""; BufferedReader ind = new BufferedReader(fil); String linje = ind.readLine(); while (linje != null) { s = s + linje; linje = ind.readLine(); } try { String hyperlink = getParameter("hyperlink"); URL url = new URL(hyperlink + "?key=" + s); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("POST"); String info = "key=" + s; con.setDoOutput(true); con.getOutputStream().write(info.getBytes()); con.connect(); getAppletContext().showDocument(url); if (con.getResponseCode() != HttpURLConnection.HTTP_OK) { System.err.println("POST failed"); } con.disconnect(); } catch (IOException ex) { ex.printStackTrace(); } } catch (IOException e) { if (e.getMessage() != null) System.out.println("e=" + e); } } }
Annonceindlæg fra Kommando
18. november 2004 - 22:03
#1
Applet security tillader tilsyneladende ikke applets at hente user.home ...
18. november 2004 - 22:04
#2
nej, men hvordan kan jeg komme til det, hvis man kan?
18. november 2004 - 22:07
#3
Det sædvanelige applet bøvl. Muligheder: * du kan ændre din kode så du ikke bruger den property * du kan få alle clients til at give alle adgang til den property * du kan putte din applet i en jar, signe den og få alle clients til at give kun din kode adgang til den property
18. november 2004 - 22:09
#4
mulighed nr. 3 : du kan putte din applet i en jar, signe den og få alle clients til at give kun din kode adgang til den property Hvordan ville kode se ud til ovennævte mulighed? Forresten så mange tak for hurtigt svar. :)
18. november 2004 - 22:18
#5
Java koden skal ikke ændres. Den compilede class fil skal pakkes i en jar fil. Den jar fil skal signes. HTML filen skal rettes til at referere til jar filen.
18. november 2004 - 22:22
#7
vil det sige at min html kode skal se sådan her ud:
<html>
<body>
<center>
<applet code="KeyReader.jar" archive="KeyReader.jar" width=325 height=325>
<param name="serfil" value="fil.ser">
<param name="hyperlink" value="
http://www.google.dk"> </applet>
</center>
</body>
</html>
18. november 2004 - 22:23
#8
jeg compiler nemlig min fil så her: javac keyreader.java jar cvf keyreader.jar keyreader.class jarsigner keyreader.jar keyreader
18. november 2004 - 22:25
#9
18. november 2004 - 22:26
#10
Jeg mener at det skal være: <applet code="KeyReader.class" archive="KeyReader.jar" width=325 height=325>
18. november 2004 - 22:32
#11
nu er jeg ikke helt med. Skal jeg lave en fil som hedder all.policy og ser sådan her ud: grant { permission java.io.FilePermission "<<ALL FILES>>", "write"; }; og så skal jeg compiler min fil på denne her måde: javac keyreader.java jar cvf keyreader.jar keyreader.class jarsigner keyreader.jar keyreader java -Djava.security.manager -Djava.security.policy=all.policy keyreader er det rigtigt forstået?
18. november 2004 - 22:34
#12
Nej. Det er noget som man kan med applications. For applets skal man rette i den policy fil som browserens java plugin bruger.
18. november 2004 - 22:40
#13
okay, vil det sige at det er noget man skal have ændret på klientens maskine. Hvis ja, hvordan kommer jeg så ud over mit problem med hvor filen ligger, for mit problem er at jeg ikke vide hvor filen ligger på klientens maskine da de jo kan køre mac, windows, linux o.s.v
18. november 2004 - 22:42
#14
Du kan ikke ændre det. Brugerne skal selv ændre det. Af indlysende årsager.
18. november 2004 - 22:42
#15
Det er så forbandet besværligt. Men det ville jo ikke være smart hvis en web side via en applet kunne trashe en client maskine totalt.
18. november 2004 - 22:46
#16
Ja det kan jeg godt se nu du siger det. Kan man så lave det på den måde at i min applet at hvis det er en windows maskine så gemmer jeg i c:\ og hvis det er andet så skal de i den grafisk delen af min applet selv browse sig frem til filen. Eller kan man ikke lave en browse funktion i en applet?
18. november 2004 - 22:57
#17
Du kan godt hardcode stien. Men en applet har heller ikke adgang til fil systemet hverken læsning eller skrivning (med default applet privs). Hvis du vil gemme noget for en bruger så skal det gemmes server side.
18. november 2004 - 23:04
#18
Jeg har en applet som er signes og den kan godt læse filen på c:\filen.ser og jeg får indhold sendt vidre til min anden side.
18. november 2004 - 23:42
#19
Forhåbentligt har du rettet i policy filen. Ellers ville hvem som helst jo kunne hapse indholdet af dine filer.
18. november 2004 - 23:52
#20
nej, jeg har ikke rettet i policy filen. Jeg skal dog klikke på Yes hver gang min applet køres for at den kan gør det.
18. november 2004 - 23:53
#21
men nu har jeg problemet, efter jeg har kørt java -Djava.security.manager -Djava.security.policy=all.policy keyreader så kan den ikke gøre det mere hvordan kan man slette det igen?
17. oktober 2005 - 09:14
#22
læg et svar og du får point :)
17. oktober 2005 - 09:19
#23
ok
Kurser inden for grundlæggende programmering