Avatar billede pnr Nybegynder
15. november 2003 - 16:56 Der er 20 kommentarer og
1 løsning

Skal have givet min applet tilladelse til at skrive på disk

Jeg skal have givet min applet tilladelse til at skrive på disken, men det vil ikke rigtig lykkes for mig. Jeg har blandet andet prøvet at rette i java.policy, men fandt ud af at jeg havde 6 filer der hed java.policy. Er der nogen der kan hjælpe mig?
Avatar billede pnr Nybegynder
15. november 2003 - 17:13 #1
Det kan godt være at det slet ikke er det med at skrive til disken der er problemet. Jeg har lavet en ftpclient i en applet, og den kaster åbenbart en exception når den prøver at tilgå ftpserveren. den virker fint når den ikke køre som applet.

Der står noget om FtpGet linie 107 den se sådan her ud:

            client.connect("xxx.xxx.xxx.136");//

Her er den execpetion
java.security.AccessControlException: access denied (java.net.SocketPermission xxx.xxx.xxx.136:21
connect,resolve)
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:270)
        at java.security.AccessController.checkPermission(AccessController.java:401)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:542)
        at java.lang.SecurityManager.checkConnect(SecurityManager.java:1044)
        at java.net.Socket.connect(Socket.java:420)
        at java.net.Socket.connect(Socket.java:376)
        at java.net.Socket.<init>(Socket.java:291)
        at java.net.Socket.<init>(Socket.java:119)
        at org.apache.commons.net.DefaultSocketFactory.createSocket(DefaultSocketFactory.java:92
)
        at org.apache.commons.net.SocketClient.connect(SocketClient.java:201)
        at org.apache.commons.net.SocketClient.connect(SocketClient.java:289)
        at FtpGet.actionPerformed(FtpGet.java:107)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1764)
        at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:18
17)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:419)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:257)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245
)
        at java.awt.Component.processMouseEvent(Component.java:5134)
        at java.awt.Component.processEvent(Component.java:4931)
        at java.awt.Container.processEvent(Container.java:1566)
        at java.awt.Component.dispatchEventImpl(Component.java:3639)
        at java.awt.Container.dispatchEventImpl(Container.java:1623)
        at java.awt.Component.dispatchEvent(Component.java:3480)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3450)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3165)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3095)
        at java.awt.Container.dispatchEventImpl(Container.java:1609)
        at java.awt.Window.dispatchEventImpl(Window.java:1590)
        at java.awt.Component.dispatchEvent(Component.java:3480)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:450)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:197)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:144)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)
Avatar billede arne_v Ekspert
15. november 2003 - 20:22 #2
Dav igen.

:-)

Den skriver faktisk hvad der skal grantes:

java.net.SocketPermission xxx.xxx.xxx.136:21 connect,resolve

Så noget a la:

grant {
  permission java.net.SocketPermission "xxx.xxx.xxx.136:21", "connect,resolve";
};
Avatar billede arne_v Ekspert
15. november 2003 - 20:23 #3
Men så er der jo også data porten, så måske snarere:

grant {
  permission java.net.SocketPermission "xxx.xxx.xxx.136:*", "connect,resolve";
};

og sætte passiv mode FTP.
Avatar billede pnr Nybegynder
16. november 2003 - 00:38 #4
Hej igen Arne v ! Det er altid rart at have dig i nærheden når koden driller :-)

Nå nu er jeg kommet lidt videre.

Jeg har gjordt følgende

client.enterLocalActiveMode();
client.connect("xxx.xxx.xxx.xxx");//
client.login("brugernavn", "pass");
InputStream is = client.retrieveFileStream("www\\test\\1valg.asp"); // linie 110

og får nu følgende fejl

java.security.AccessControlException: access denied (java.net.SocketPermission xxx.xxx.xxx.xxx:20
accept,resolve)
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:270)
        at java.security.AccessController.checkPermission(AccessController.java:401)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:542)
        at java.lang.SecurityManager.checkAccept(SecurityManager.java:1168)
        at java.net.ServerSocket.implAccept(ServerSocket.java:443)
        at java.net.ServerSocket.accept(ServerSocket.java:410)
        at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:458)
        at org.apache.commons.net.ftp.FTPClient.retrieveFileStream(FTPClient.java:1285)
        at FtpGet.actionPerformed(FtpGet.java:110)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1764)
        at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:18
17)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:419)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:257)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245
)
        at java.awt.Component.processMouseEvent(Component.java:5134)
        at java.awt.Component.processEvent(Component.java:4931)
        at java.awt.Container.processEvent(Container.java:1566)
        at java.awt.Component.dispatchEventImpl(Component.java:3639)
        at java.awt.Container.dispatchEventImpl(Container.java:1623)
        at java.awt.Component.dispatchEvent(Component.java:3480)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3450)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3165)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3095)
        at java.awt.Container.dispatchEventImpl(Container.java:1609)
        at java.awt.Window.dispatchEventImpl(Window.java:1590)
        at java.awt.Component.dispatchEvent(Component.java:3480)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:450)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:197)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:144)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)
Avatar billede pnr Nybegynder
16. november 2003 - 00:42 #5
Jeg har også prøvet:

client.enterLocalPassiveMode();
Avatar billede pnr Nybegynder
16. november 2003 - 01:09 #6
Jeg har skrevet følgende i java.policy:
grant {
  permission java.net.SocketPermission "xxx.xxx.xxx.xxx:*", "connect,resolve";
};
Avatar billede arne_v Ekspert
16. november 2003 - 10:07 #7
Fejlen atyder jo at du skal:

grant {
  permission java.net.SocketPermission "xxx.xxx.xxx.xxx:*", "connect,resolve,accept";
};
Avatar billede arne_v Ekspert
16. november 2003 - 10:08 #8
Men det burde kun være nødvendigt hvis du ikke bruger passiv mode.
Avatar billede arne_v Ekspert
16. november 2003 - 10:11 #9
Får du samme fejl når du kalder enterLocalPassiveMode ?
Avatar billede pnr Nybegynder
16. november 2003 - 10:11 #10
ja
Avatar billede pnr Nybegynder
16. november 2003 - 10:21 #11
SÅDAN ARNE V!!!!

Nu virker det, hvad skulle jeg gøre uden dig, du er sq min helt :-)

Smid et svar så er der nogle meget velfortjente point!
Avatar billede pnr Nybegynder
16. november 2003 - 10:25 #12
Men appletviewer og IE bruger ikke samme java.policy fil.

IE bruger den der ligger under programmer/java/.....

Mens apppletviewer bruger den der ligger under j2sdk1.4.1_02/jre/...
Avatar billede pnr Nybegynder
16. november 2003 - 10:35 #13
Nu var planen at den applet skulle bruge en sql-server skal jeg også have givet tilladelse til det?
Avatar billede arne_v Ekspert
16. november 2003 - 10:35 #14
svar
Avatar billede arne_v Ekspert
16. november 2003 - 10:36 #15
applet viewwer er et development værktøj og ligger under SDK directoriet
mens JVM for browser er en ægte runtime og derfor liger under programmer.

(og det kan være værre endnu hvi sman har mange versioner af java installeret)
Avatar billede arne_v Ekspert
16. november 2003 - 10:37 #16
En SQLServer lytter normnalt på port 1433.

permission java.net.SocketPermission "xxx.xxx.xxx.xxx:1433", "connect,resolve";

burde være nok til det.
Avatar billede arne_v Ekspert
16. november 2003 - 10:39 #17
Det anses normalt som værende en for stor sikkerheds risiko at have
direkte adgang fra internet til en database. Man foretrækker at have
applet----ASP eller PHP eller andet----database.

Hvis det er intranet er det OK.
Avatar billede arne_v Ekspert
16. november 2003 - 10:41 #18
SQLServer JDBC driver er 3 jar filer på ca. 500 KB.

Kræver at SQLServer er konfigureret til mixed mode security.
Avatar billede pnr Nybegynder
16. november 2003 - 10:48 #19
Kan du prøve at skære det lidt mere ud i pap med det database adgang? Hvordan burde jeg lave den database adgang?
Avatar billede arne_v Ekspert
16. november 2003 - 13:08 #20
Applet bruger HttpUrlConnection klassen til at lave GET eller POST
requests til en ASP eller PHP side som henter fra eller opdaterer
databasen.
Avatar billede arne_v Ekspert
16. november 2003 - 13:24 #21
Husk iøvrigt at højne security inden du går i production.

Kun give kode signed af dig den øgede adgang.

Kun givee adgang til den nødvendige IP adresse og de nødvendige porte.
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