2012-09-05 11 views
6
permission java.net.SocketPermission "192.168.1.1:31337", "connect, accept, resolve"; 

Cosa consente la seguente autorizzazione? La mia applicazione è autorizzata ad accettare connessioni solo da 192.168.1.1:31337 (forse un client esterno) o ad accettare connessioni su 192.168.1.1:31337 (la mia applicazione è in esecuzione su 192.168.1.1:31337, dov'è la differenza per "ascoltare" '?).Come capire le autorizzazioni socket Java?

risposta

3

Se il codice è un'applet o è in esecuzione con un gestore della sicurezza java, è necessario concedere esplicitamente le autorizzazioni per eseguire attività.

Per consentire l'accesso a una risorsa per un'applet (o un'applicazione in esecuzione con un gestore della sicurezza), l'autorizzazione corrispondente deve essere esplicitamente concessa al codice che tenta l'accesso.

Per impostazione predefinita il codice non dispone dell'autorizzazione socket. La tua autorizzazione dice che il tuo codice ha il permesso di accettare la connessione, di connettersi e di risolvere solo l'host con IP 192.168.1.1 sulla porta 31337.

Le azioni "accetta" e "collega" sono ovvie.

L'azione di "risoluzione" è implicita quando una delle altre azioni è presente. L'azione "risoluzione" si riferisce alle ricerche del servizio nome host/ip.

L'azione "ascolta" ha senso solo se utilizzata con "localhost".

La differenza tra ascoltare e accettare è che ascoltare significa "essere pronti per la connessione e vedere se c'è una connessione in attesa" e accettare significa "ok, accettalo".

See the docs for permissions in java 7. e java.net.SocketPermission java docs

+0

Ebbene, la documentazione Sun dice: Allo stesso modo, se l'autorizzazione seguente: p2 = new SocketPermission ("localhost: 1024-", "accettare, connettersi, ascoltare"); concesso a un certo codice, consente a tale codice di accettare connessioni su, connettersi o ascoltare su qualsiasi porta tra 1024 e 65535 sull'host locale. Quindi "accetta" consente le connessioni all'host specifico, non dall'host specifico. – lazydaemon

+0

Ovviamente è "on", non "from". Il resto della risposta lo suggerisce. Corretto. Grazie. – dcernahoschi