|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Object
|
+--java.lang.SecurityManager
|
+--com.softplc.SecurityManager
The SoftPLC security manager class restricts what can be done under SoftPLC. It allows all Java code to be screened at runtime before performing a possibly unsafe or sensitive operation.
For example, it is normally not desirable to perform a System.exit() while under SoftPLC since this would stop the Ladder scan as well. It is also normally not desirable to exec() another application, as this would screw up the scheduling of CPU time and cause the Ladder scan to be neglected. It is the SecurityManager's role to enforce a policy in these and other areas.
The SecurityManager class contains many methods with
names that begin with the word check. These methods
are called by various methods in the Java libraries before those
methods perform certain potentially sensitive operations. The
invocation of such a check method typically looks like this:
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkXXX(argument, . . . );
}
The security manager is thereby given an opportunity to prevent
completion of the operation by throwing an exception. A security
manager routine simply returns if the operation is permitted, but
throws a SecurityException if the operation is not
permitted. The only exception to this convention is
checkTopLevelWindow, which returns a
boolean value.
The current security manager is set by the
setSecurityManager method in class
System. The current security manager is obtained
by the getSecurityManager method.
SecurityManager,
ClassLoader,
SecurityException,
SecurityManager.checkTopLevelWindow(java.lang.Object),
java.lang.System#getSecurityManager(),
java.lang.System#setSecurityManager(java.lang.SecurityManager)| Fields inherited from class java.lang.SecurityManager |
inCheck |
| Constructor Summary | |
SecurityManager()
|
|
| Method Summary | |
void |
checkAccept(java.lang.String host,
int port)
Throws a SecurityException if the
calling thread is not permitted to accept a socket connection from
the specified host and port number. |
void |
checkAccess(java.lang.Thread g)
Throws a SecurityException if the
calling thread is not allowed to modify the thread argument. |
void |
checkAccess(java.lang.ThreadGroup g)
Throws a SecurityException if the
calling thread is not allowed to modify the thread group argument. |
void |
checkAwtEventQueueAccess()
Tests if a client can get access to the AWT event queue. |
void |
checkConnect(java.lang.String host,
int port)
Throws a SecurityException if the
calling thread is not allowed to open a socket connection to the
specified host and port number. |
void |
checkConnect(java.lang.String host,
int port,
java.lang.Object context)
Throws a SecurityException if the
specified security context is not allowed to open a socket
connection to the specified host and port number. |
void |
checkCreateClassLoader()
Throws a SecurityException if the
calling thread is not allowed to create a new class loader. |
void |
checkDelete(java.lang.String file)
Throws a SecurityException if the
calling thread is not allowed to delete the specified file. |
void |
checkExec(java.lang.String cmd)
Throws a SecurityException if the
calling thread is not allowed to create a subprocss. |
void |
checkExit(int status)
Throws a SecurityException if the
calling thread is not allowed to cause the Java Virtual Machine to
halt with the specified status code. |
void |
checkLink(java.lang.String lib)
Throws a SecurityException if the
calling thread is not allowed to dynamic link the library code
specified by the string argument file. |
void |
checkListen(int port)
Throws a SecurityException if the
calling thread is not allowed to wait for a connection request on
the specified local port number. |
void |
checkMemberAccess(java.lang.Class clazz,
int which)
Tests if a client is allowed to access members. |
void |
checkMulticast(java.net.InetAddress maddr)
Tests if current execution context is allowed to use (join/leave/send/receive) IP multicast. |
void |
checkMulticast(java.net.InetAddress maddr,
byte ttl)
Tests to see if current execution context is allowed to use (join/leave/send/receive) IP multicast. |
void |
checkPackageAccess(java.lang.String pkg)
Throws a SecurityException if the
calling thread is not allowed to access the package specified by
the argument. |
void |
checkPackageDefinition(java.lang.String pkg)
Throws a SecurityException if the
calling thread is not allowed to define classes in the package
specified by the argument. |
void |
checkPrintJobAccess()
Tests if a client can initiate a print job request. |
void |
checkPropertiesAccess()
Throws a SecurityException if the
calling thread is not allowed to access or modify the system
properties. |
void |
checkPropertyAccess(java.lang.String key)
Throws a SecurityException if the
calling thread is not allowed to access the system property with
the specified key name. |
void |
checkRead(java.io.FileDescriptor fd)
Throws a SecurityException if the
calling thread is not allowed to read from the specified file
descriptor. |
void |
checkRead(java.lang.String file)
Throws a SecurityException if the
calling thread is not allowed to read the file specified by the
string argument. |
void |
checkRead(java.lang.String file,
java.lang.Object context)
Throws a SecurityException if the
specified security context is not allowed to read the file
specified by the string argument. |
void |
checkSecurityAccess(java.lang.String action)
Tests access to certain operations for a security API action. |
void |
checkSetFactory()
Throws a SecurityException if the
calling thread is not allowed to set the socket factory used by
ServerSocket or Socket, or the stream
handler factory used by URL. |
void |
checkSystemClipboardAccess()
Tests if a client can get access to the system clipboard. |
boolean |
checkTopLevelWindow(java.lang.Object window)
Returns false if the calling
thread is not trusted to bring up the top-level window indicated
by the window argument. |
void |
checkWrite(java.io.FileDescriptor fd)
Throws a SecurityException if the
calling thread is not allowed to write to the specified file
descriptor. |
void |
checkWrite(java.lang.String file)
Throws a SecurityException if the
calling thread is not allowed to write to the file specified by
the string argument. |
java.lang.Object |
getSecurityContext()
Creates an object that encapsulates the current execution environment. |
java.lang.ThreadGroup |
getThreadGroup()
Returns the thread group into which to instantiate any new thread being created at the time this is being called. |
| Methods inherited from class java.lang.SecurityManager |
checkPermission, checkPermission, classDepth, classLoaderDepth, currentClassLoader, currentLoadedClass, getClassContext, getInCheck, inClass, inClassLoader |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
public SecurityManager()
| Method Detail |
public java.lang.Object getSecurityContext()
checkConnect method and by the
two-argument checkRead method.
These methods are needed because a trusted method may be called on to read a file or open a socket on behalf of another method. The trusted method needs to determine if the other (possibly untrusted) method would be allowed to perform the operation on its own.
getSecurityContext in class java.lang.SecurityManagerSecurityManager.checkConnect(java.lang.String, int, java.lang.Object),
SecurityManager.checkRead(java.lang.String, java.lang.Object)public void checkCreateClassLoader()
SecurityException if the
calling thread is not allowed to create a new class loader.
The checkCreateClassLoader method for class
SecurityManager always throws a
SecurityException.
checkCreateClassLoader in class java.lang.SecurityManagerjava.lang.SecurityException - if the caller does not have permission
to create a new class loader.public void checkAccess(java.lang.Thread g)
SecurityException if the
calling thread is not allowed to modify the thread argument.
This method is invoked for the current security manager by the
stop, suspend, resume,
setPriority, setName, and
setDaemon methods of class Thread.
The checkAccess method for class
SecurityManager always throws a
SecurityException.
checkAccess in class java.lang.SecurityManagerg - the thread to be checked.java.lang.SecurityException - if the caller does not have permission
to modify the thread.java.lang.System#getSecurityManager(),
Thread.resume(),
Thread.setDaemon(boolean),
Thread.setName(java.lang.String),
Thread.setPriority(int),
Thread.stop(),
Thread.suspend()public void checkAccess(java.lang.ThreadGroup g)
SecurityException if the
calling thread is not allowed to modify the thread group argument.
This method is invoked for the current security manager when a
new child thread or child thread group is created, and by the
setDaemon, setMaxPriority,
stop, suspend, resume, and
destroy methods of class ThreadGroup.
The checkAccess method for class
SecurityManager always throws a
SecurityException.
checkAccess in class java.lang.SecurityManagerg - the thread group to be checked.java.lang.SecurityException - if the caller does not have permission
to modify the thread group.java.lang.System#getSecurityManager(),
ThreadGroup.destroy(),
ThreadGroup.resume(),
ThreadGroup.setDaemon(boolean),
ThreadGroup.setMaxPriority(int),
ThreadGroup.stop(),
ThreadGroup.suspend()public void checkExit(int status)
SecurityException if the
calling thread is not allowed to cause the Java Virtual Machine to
halt with the specified status code.
This method is invoked for the current security manager by the
exit method of class Runtime. A status
of 0 indicates success; other values indicate various
errors.
The checkExit method for class
SecurityManager always throws a
SecurityException.
checkExit in class java.lang.SecurityManagerstatus - the exit status.java.lang.SecurityException - if the caller does not have permission
to halt the Java Virtual Machine with the specified status.java.lang.Runtime#exit(int),
java.lang.System#getSecurityManager()public void checkExec(java.lang.String cmd)
SecurityException if the
calling thread is not allowed to create a subprocss.
This method is invoked for the current security manager by the
exec methods of class Runtime.
The checkExec method for class
SecurityManager always throws a
SecurityException.
checkExec in class java.lang.SecurityManagercmd - the specified system command.java.lang.SecurityException - if the caller does not have permission
to create a subprocess.java.lang.Runtime#exec(java.lang.String),
java.lang.Runtime#exec(java.lang.String, java.lang.String[]),
java.lang.Runtime#exec(java.lang.String[]),
java.lang.Runtime#exec(java.lang.String[], java.lang.String[]),
java.lang.System#getSecurityManager()public void checkLink(java.lang.String lib)
SecurityException if the
calling thread is not allowed to dynamic link the library code
specified by the string argument file. The argument is either a
simple library name or a complete filename.
This method is invoked for the current security manager by
methods load and loadLibrary of class
Runtime.
The checkLink method for class
SecurityManager always throws a
SecurityException.
checkLink in class java.lang.SecurityManagerlib - the name of the library.java.lang.SecurityException - if the caller does not have permission
to dynamically link the library.java.lang.Runtime#load(java.lang.String),
java.lang.Runtime#loadLibrary(java.lang.String),
java.lang.System#getSecurityManager()public void checkRead(java.io.FileDescriptor fd)
SecurityException if the
calling thread is not allowed to read from the specified file
descriptor.
The checkRead method for class
SecurityManager always throws a
SecurityException.
checkRead in class java.lang.SecurityManagerfd - the system-dependent file descriptor.java.lang.SecurityException - if the caller does not have permission
to access the specified file descriptor.FileDescriptorpublic void checkRead(java.lang.String file)
SecurityException if the
calling thread is not allowed to read the file specified by the
string argument.
The checkRead method for class
SecurityManager always throws a
SecurityException.
checkRead in class java.lang.SecurityManagerfile - the system-dependent file name.java.lang.SecurityException - if the caller does not have permission
to access the specified file.
public void checkRead(java.lang.String file,
java.lang.Object context)
SecurityException if the
specified security context is not allowed to read the file
specified by the string argument. The context must be a security
context returned by a previous call to
getSecurityContext.
The checkRead method for class
SecurityManager always throws a
SecurityException.
checkRead in class java.lang.SecurityManagerfile - the system-dependent filename.context - a system-dependent security context.java.lang.SecurityException - if the specified security context does
not have permission to read the specified file.SecurityManager.getSecurityContext()public void checkWrite(java.io.FileDescriptor fd)
SecurityException if the
calling thread is not allowed to write to the specified file
descriptor.
The checkWrite method for class
SecurityManager always throws a
SecurityException.
checkWrite in class java.lang.SecurityManagerfd - the system-dependent file descriptor.java.lang.SecurityException - if the caller does not have permission
to access the specified file descriptor.FileDescriptorpublic void checkWrite(java.lang.String file)
SecurityException if the
calling thread is not allowed to write to the file specified by
the string argument.
The checkWrite method for class
SecurityManager always throws a
SecurityException.
checkWrite in class java.lang.SecurityManagerfile - the system-dependent filename.java.lang.SecurityException - if the caller does not have permission
to access the specified file.public void checkDelete(java.lang.String file)
SecurityException if the
calling thread is not allowed to delete the specified file.
This method is invoked for the current security manager by the
delete method of class File.
The checkDelete method for class
SecurityManager always throws a
SecurityException.
checkDelete in class java.lang.SecurityManagerfile - the system-dependent filename.java.lang.SecurityException - if the caller does not have permission
to delete the file.File.delete(),
java.lang.System#getSecurityManager()
public void checkConnect(java.lang.String host,
int port)
SecurityException if the
calling thread is not allowed to open a socket connection to the
specified host and port number.
A port number of -1 indicates that the calling
method is attempting to determine the IP address of the specified
host name.
The checkConnect method for class
SecurityManager always throws a
SecurityException.
checkConnect in class java.lang.SecurityManagerhost - the host name port to connect to.port - the protocol port to connect to.java.lang.SecurityException - if the caller does not have permission
to open a socket connection to the specified
host and port.
public void checkConnect(java.lang.String host,
int port,
java.lang.Object context)
SecurityException if the
specified security context is not allowed to open a socket
connection to the specified host and port number.
A port number of -1 indicates that the calling
method is attempting to determine the IP address of the specified
host name.
The checkConnect method for class
SecurityManager always throws a
SecurityException.
checkConnect in class java.lang.SecurityManagerhost - the host name port to connect to.port - the protocol port to connect to.context - a system-dependent security context.java.lang.SecurityException - if the specified security context does
not have permission to open a socket connection to the
specified host and port.SecurityManager.getSecurityContext()public void checkListen(int port)
SecurityException if the
calling thread is not allowed to wait for a connection request on
the specified local port number.
The checkListen method for class
SecurityManager always throws a
SecurityException.
checkListen in class java.lang.SecurityManagerport - the local port.java.lang.SecurityException - if the caller does not have permission
to listen on the specified port.
public void checkAccept(java.lang.String host,
int port)
SecurityException if the
calling thread is not permitted to accept a socket connection from
the specified host and port number.
This method is invoked for the current security manager by the
accept method of class ServerSocket.
The checkAccept method for class
SecurityManager always throws a
SecurityException.
checkAccept in class java.lang.SecurityManagerhost - the host name of the socket connection.port - the port number of the socket connection.java.lang.SecurityException - if the caller does not have permission
to accept the connection.java.lang.System#getSecurityManager(),
ServerSocket.accept()public void checkMulticast(java.net.InetAddress maddr)
checkMulticast in class java.lang.SecurityManagermulticast - Internet group address to be used.java.lang.SecurityException - if a security error has occurred.
public void checkMulticast(java.net.InetAddress maddr,
byte ttl)
checkMulticast in class java.lang.SecurityManagermulticast - Internet group address to be used.ttl - value in use, if it is multicast send.java.lang.SecurityException - if a security error has occurred.public void checkPropertiesAccess()
SecurityException if the
calling thread is not allowed to access or modify the system
properties.
This method is used by the getProperties and
setProperties methods of class System.
The checkPropertiesAccess method for class
SecurityManager always throws a
SecurityException.
checkPropertiesAccess in class java.lang.SecurityManagerjava.lang.SecurityException - if the caller does not have permission
to access or modify the system properties.java.lang.System#getProperties(),
java.lang.System#setProperties(java.util.Properties)public void checkPropertyAccess(java.lang.String key)
SecurityException if the
calling thread is not allowed to access the system property with
the specified key name.
This method is used by the getProperty method of
class System.
The checkPropertiesAccess method for class
SecurityManager always throws a
SecurityException.
checkPropertyAccess in class java.lang.SecurityManagerkey - a system property key.java.lang.SecurityException - if the caller does not have permission
to access the specified system property.java.lang.System#getProperty(java.lang.String)public boolean checkTopLevelWindow(java.lang.Object window)
false if the calling
thread is not trusted to bring up the top-level window indicated
by the window argument. In this case, the caller can
still decide to show the window, but the window should include
some sort of visual warning. If the method returns
true, then the window can be shown without any
special restrictions.
See class Window for more information on trusted and
untrusted windows.
The checkSetFactory method for class
SecurityManager always returns false.
checkTopLevelWindow in class java.lang.SecurityManagerwindow - the new window that is being created.true if the caller is trusted to put up
top-level windows; false otherwise.java.lang.SecurityException - if creation is disallowed entirely.java.awt.Windowpublic void checkPrintJobAccess()
checkPrintJobAccess in class java.lang.SecurityManagerpublic void checkSystemClipboardAccess()
checkSystemClipboardAccess in class java.lang.SecurityManagerpublic void checkAwtEventQueueAccess()
checkAwtEventQueueAccess in class java.lang.SecurityManagerpublic void checkPackageAccess(java.lang.String pkg)
SecurityException if the
calling thread is not allowed to access the package specified by
the argument.
This method is used by the loadClass method of class
loaders.
The checkPackageAccess method for class
SecurityManager always throws a
SecurityException.
checkPackageAccess in class java.lang.SecurityManagerpkg - the package name.java.lang.SecurityException - if the caller does not have permission
to access the specified package.ClassLoader.loadClass(java.lang.String, boolean)public void checkPackageDefinition(java.lang.String pkg)
SecurityException if the
calling thread is not allowed to define classes in the package
specified by the argument.
This method is used by the loadClass method of some
class loaders.
The checkPackageDefinition method for class
SecurityManager always throws a
SecurityException.
checkPackageDefinition in class java.lang.SecurityManagerpkg - the package name.java.lang.SecurityException - if the caller does not have permission
to define classes in the specified package.ClassLoader.loadClass(java.lang.String, boolean)public void checkSetFactory()
SecurityException if the
calling thread is not allowed to set the socket factory used by
ServerSocket or Socket, or the stream
handler factory used by URL.
The checkSetFactory method for class
SecurityManager always throws a
SecurityException.
checkSetFactory in class java.lang.SecurityManagerjava.lang.SecurityException - if the caller does not have permission
to specify a socket factory or a stream handler factory.ServerSocket.setSocketFactory(java.net.SocketImplFactory),
Socket.setSocketImplFactory(java.net.SocketImplFactory),
URL.setURLStreamHandlerFactory(java.net.URLStreamHandlerFactory)
public void checkMemberAccess(java.lang.Class clazz,
int which)
checkMemberAccess in class java.lang.SecurityManagerpublic void checkSecurityAccess(java.lang.String action)
checkSecurityAccess in class java.lang.SecurityManagerpublic java.lang.ThreadGroup getThreadGroup()
getThreadGroup in class java.lang.SecurityManager
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||