Avatar billede bodhisatva Nybegynder
08. februar 2003 - 10:39 Der er 18 kommentarer

java.policy omkring System.exit(1); og webserver

Jeg sidder med en Resin på IIS5.0 og har lidt problemer med at brugere har mulighed for at kalde System.exit(1); og få srun til at gå ned.

Jeg har fundet lidt omkring java.policy og indtil videre ser den således ud:

grant {  permission java.security.AllPermission;};
grant {
  permission java.lang.RuntimePermission "stopThread";
};

... men det forhindrer ikke brugere i at lukke serveren, og jeg forstår ikke syntax'en. Findes der en beskrivelse over alle metoder til at disable specielle funktioner??

What to do, what to do...
Avatar billede arne_v Ekspert
08. februar 2003 - 13:43 #1
Avatar billede arne_v Ekspert
08. februar 2003 - 13:48 #2
Med hensyn til JSP/servlet containere står der noget på:
  http://jakarta.apache.org/tomcat/tomcat-4.0-doc/security-manager-howto.html
(ganske vist for Tomcat, men det kan formentlig sagtens overføres til Resin)
Avatar billede bodhisatva Nybegynder
08. februar 2003 - 14:13 #3
Jo, jeg har været lidt inde og kigge på hvordan man laver en "grant permission" men eksempelvis dette:

grant {
        // JVM properties to allow read access
        permission java.util.PropertyPermission "java.version", "read";
        permission java.util.PropertyPermission "java.vendor", "read";
        permission java.util.PropertyPermission "java.vendor.url", "read";
        permission java.util.PropertyPermission "java.class.version", "read";
    permission java.util.PropertyPermission "java.specification.version", "read";
    permission java.util.PropertyPermission "java.specification.vendor", "read";
    permission java.util.PropertyPermission "java.specification.name", "read";

    permission java.util.PropertyPermission "java.vm.specification.version", "read";
    permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
    permission java.util.PropertyPermission "java.vm.specification.name", "read";
    permission java.util.PropertyPermission "java.vm.version", "read";
    permission java.util.PropertyPermission "java.vm.vendor", "read";
    permission java.util.PropertyPermission "java.vm.name", "read";
};

... siger mig intet. Jeg forstår simpelthen ikke syntax'en og hvordan den skal bruges. Det kunne være man kunne få vist et eksempel på hvordan man lukker af for eksempelvis exitVm, jeg mener det er den der kontrollerer System.exit(int-værdi); ??
Avatar billede arne_v Ekspert
08. februar 2003 - 14:21 #4
Det er sgu heller ikke nemt.

Men der er ihvertfald eksempel på exitVm syntax i:
  http://jan.netcomp.monash.edu.au/distjava/security/lecture2.html
Avatar billede bodhisatva Nybegynder
08. februar 2003 - 15:18 #5
Min .java.policy ser nu således ud:

/* AUTOMATICALLY GENERATED ON Sat Feb 08 15:16:19 CET 2003*/
/* DO NOT EDIT */

grant {
  permission java.lang.RuntimePermission "exitVM", "false";
  permission java.lang.RuntimePermission "stopThread", "true";
 
};

Men når jeg kalder denne:

<%@ page language="java" %>

<%

    out.println(System.getSecurityManager());
    System.out.println(System.getSecurityManager());
    System.exit(1);

%>

lukkes der stadig ned, og Resin genstarter.
Avatar billede arne_v Ekspert
08. februar 2003 - 15:22 #6
Har du enablet security manager i Resin konfigurationen ?
Avatar billede bodhisatva Nybegynder
08. februar 2003 - 15:25 #7
jeps, men resin.conf ser således ud - groft skrevet ->

<caucho.com>
<iis priority='high'/>
  <security-manager/> 
  <!-- <log id='/' href='stderr:'/> -->
 
 
 
<log id='/log' href='stderr:' timestamp='[%Y-%m-%d %H:%M:%S.%s]'/>
<java compiler="internal" compiler-args=""/>
<jsp precompile='true' static-encoding='true' recompile-on-error='true'/>


  <http-server app-dir='d:\www' class-update-interval='2'>
  <ignore-client-disconnect>false</ignore-client-disconnect>


    <srun port='6802'/>
    <!-- automatically compile Java in WEB-INF -->
    <classpath id='WEB-INF/classes' source='WEB-INF/source' compile='true'/>
      <error-log id='log/error.log'/>


  </http-server>
 

</caucho.com>
Avatar billede bodhisatva Nybegynder
08. februar 2003 - 15:31 #8
Det er godt nok lidt sjovt, for når jeg spørger på:

System.getSecurityManager()

skriver den null somom den ikke var til stede, men åbner jeg mit policy tool får jeg ikke nogen fejl. Det vil sige, har jeg læst, at policy-filen eksisterer, men mere har jeg ikke fundet ud af...
Avatar billede arne_v Ekspert
08. februar 2003 - 15:36 #9
Policy tool er en policy fil editor.

Den har intet med en SecurityManager at gøre.

Den skal aktiveres inden i applikationen.

Hvis System.getSecurityManager returnerer null, så har du ingen
SecurityManager.
Avatar billede arne_v Ekspert
08. februar 2003 - 15:38 #10
Avatar billede bodhisatva Nybegynder
08. februar 2003 - 16:02 #11
Hmmm, det fik jeg nu ikke meget ud af, men jeg har fundet: C:\j2sdk1.4.1_01\jre\lib\security hvor der ligger en policy fil også, udover den jeg selv har lavet i: C:\Documents and Settings\mit home user dir\
Men den går jeg ikke ud fra jeg skal bruge?

Der står noget om at man skal lave lidt om i wrapper.pl men det findes der ikke en fil på mit system der hedder.
Avatar billede arne_v Ekspert
08. februar 2003 - 16:08 #12
Heller ikke på mit.

:-(
Avatar billede arne_v Ekspert
08. februar 2003 - 16:13 #13
http://localhost:8080/ref/security.xtp#security-manager

siger også at det skulle være nok at adde det tag.
Avatar billede bodhisatva Nybegynder
08. februar 2003 - 16:17 #14
Jeg ser endnu et problem i denne:

BufferedReader fin = new BufferedReader(new
FileReader("c:\\boot.ini"));
String str=null;
while ((str=fin.readLine()) != null){
out.println (str);
}

Der må da være en mulighed for at disable dette. ALT kan jo lade sig gøre ;)
Men hvordan...
Avatar billede arne_v Ekspert
08. februar 2003 - 16:20 #15
Hvis jeg læser http://java.sun.com/j2se/1.4/docs/guide/security/PolicyFiles.html#DefaultLocs
korrekt, så kan du ligge en:

C:\Documents and Settings\username\.java.policy fil som skulle blive brugt.

Men det vil muligvis have lidt bivirkninger for andre apps.
Avatar billede arne_v Ekspert
08. februar 2003 - 16:21 #16
java -Djava.security.manager -Djava.security.policy=someURL SomeApp

modellen ville jo nok være bedre, men jeg kan bare ikke lige se, hvor
man angiver JVM parametre til Resin.
Avatar billede arne_v Ekspert
08. februar 2003 - 16:23 #17
Hvis du kan få testet på exitVm til at virke, så kan du også forhindre
diverse andet.

http://localhost:8080/ref/security.xtp#security-manager

har eksempel på hvordan man restricter fil-adgangen.
Avatar billede bodhisatva Nybegynder
08. februar 2003 - 23:18 #18
Jo, men det kan jeg ikke. Der er ikke rigtig nogen gode tutorials jeg kan læse om det på, i hvert fald ikke noget der virker...
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