com.dynamide.security
Class DynamideSecurityManager
java.lang.Object
java.lang.SecurityManager
com.dynamide.security.DynamideSecurityManager
public class DynamideSecurityManager
- extends java.lang.SecurityManager
Code like this will fail if called anywhere in a Dynamide worker thread:
//This code raises an exception, as it should:
System.out.println("Installing new HackerSecurityManager...");
System.setSecurityManager(new com.dynamide.security.HackerSecurityManager());
| Fields inherited from class java.lang.SecurityManager |
inCheck |
|
Constructor Summary |
DynamideSecurityManager()
Dynamide specifically disallows anyone setting any SecurityManager other than com.dynamide.security.SecurityManager
and disallows other class loaders. |
|
Method Summary |
void |
checkAccept(java.lang.String host,
int port)
|
void |
checkAccess(java.lang.Thread g)
|
void |
checkAccess(java.lang.ThreadGroup g)
|
void |
checkAwtEventQueueAccess()
|
static void |
checkCallStack(java.lang.String className,
java.lang.String methodName,
int distance,
boolean verbose)
Inspect the current call stack, to see if a named class and method are down the call stack
by the distance specified from the point of the call. |
void |
checkConnect(java.lang.String host,
int port)
|
void |
checkConnect(java.lang.String host,
int port,
java.lang.Object context)
|
void |
checkCreateClassLoader()
|
void |
checkDelete(java.lang.String file)
|
void |
checkExec(java.lang.String cmd)
|
void |
checkExit(int status)
|
void |
checkLink(java.lang.String lib)
|
void |
checkListen(int port)
|
void |
checkMemberAccess(java.lang.Class clazz,
int which)
|
void |
checkMulticast(java.net.InetAddress maddr)
|
void |
checkMulticast(java.net.InetAddress maddr,
byte ttl)
|
void |
checkPackageAccess(java.lang.String pkg)
|
void |
checkPackageDefinition(java.lang.String pkg)
|
void |
checkPermission(java.security.Permission perm)
|
void |
checkPermission(java.security.Permission perm,
java.lang.Object context)
We avoid code like this:
t = new Thread();
t.setContextClassLoader(new com.dynamide.security.DynamideClassLoader());
We dissallow any and all context class loaders. |
void |
checkPrintJobAccess()
|
void |
checkPropertiesAccess()
|
void |
checkPropertyAccess(java.lang.String key)
|
void |
checkPropertyAccess(java.lang.String key,
java.lang.String def)
|
void |
checkRead(java.io.FileDescriptor fd)
|
void |
checkRead(java.lang.String file)
|
void |
checkRead(java.lang.String file,
java.lang.Object context)
|
void |
checkSecurityAccess(java.lang.String provider)
|
static void |
checkSecurityManagerInit()
|
void |
checkSetFactory()
|
void |
checkSystemClipboardAccess()
|
boolean |
checkTopLevelWindow(java.lang.Object window)
|
void |
checkWrite(java.io.FileDescriptor fd)
|
void |
checkWrite(java.lang.String file)
|
static boolean |
isCurrentThreadWorker()
|
boolean |
isThreadEnabledFor(java.lang.String action)
|
static boolean |
isThreadWorker(java.lang.Thread g)
|
static java.util.List |
java13_StackTraceElementDM(java.lang.Throwable t)
|
static java.util.List |
java14_StackTraceElementDM(java.lang.Throwable t)
|
| Methods inherited from class java.lang.SecurityManager |
classDepth, classLoaderDepth, currentClassLoader, currentLoadedClass, getClassContext, getInCheck, getSecurityContext, getThreadGroup, inClass, inClassLoader |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
DynamideSecurityManager
public DynamideSecurityManager()
- Dynamide specifically disallows anyone setting any SecurityManager other than com.dynamide.security.SecurityManager
and disallows other class loaders.
checkSecurityManagerInit
public static void checkSecurityManagerInit()
throws java.lang.Exception
- Throws:
java.lang.Exception
isThreadEnabledFor
public boolean isThreadEnabledFor(java.lang.String action)
isCurrentThreadWorker
public static boolean isCurrentThreadWorker()
isThreadWorker
public static boolean isThreadWorker(java.lang.Thread g)
java14_StackTraceElementDM
public static java.util.List java14_StackTraceElementDM(java.lang.Throwable t)
java13_StackTraceElementDM
public static java.util.List java13_StackTraceElementDM(java.lang.Throwable t)
throws java.lang.Exception
- Throws:
java.lang.Exception
checkCallStack
public static void checkCallStack(java.lang.String className,
java.lang.String methodName,
int distance,
boolean verbose)
throws java.lang.SecurityException
- Inspect the current call stack, to see if a named class and method are down the call stack
by the distance specified from the point of the call. You do not need to include the
call to checkCallStack in the distance. Also, constructors consume one slot on the call stack,
with a method name of "<init>".
For example, suppose you wish to check that Bar.baz() was called by MyClass.foo().
Given the following definitions, the call to checkCallStack succeeds:
package com.acme;
public class MyClass{
public void foo(){
Bar.baz();
}
}
public class Bar {
public static void baz(){
checkCallStack("com.acme.MyClass", "foo", 1);
}
}
To check a constructor, remember to index accordingly, since the constructor takes one slot.
Given the following definitions, the call to checkCallStack succeeds:
package com.acme;
public class MyClass{
public void foo(){
new Bar();
}
}
public class Bar {
public Bar(){
checkCallStack("com.acme.MyClass", "foo", 2);
}
}
On a 850 MHz intel box, this method costs 0.1 milliseconds. So it is safe to call routinely.
- Parameters:
verbose - If this is on, then debug messages will go to log4j with category com.dynamide.security.DynamideSecurityManager
and level INFO.
- Throws:
java.lang.SecurityException - if the className and methodName are not the specified distance down the call stack.
checkCreateClassLoader
public void checkCreateClassLoader()
- Overrides:
checkCreateClassLoader in class java.lang.SecurityManager
checkAccess
public void checkAccess(java.lang.Thread g)
- Overrides:
checkAccess in class java.lang.SecurityManager
checkAccess
public void checkAccess(java.lang.ThreadGroup g)
- Overrides:
checkAccess in class java.lang.SecurityManager
checkExit
public void checkExit(int status)
- Overrides:
checkExit in class java.lang.SecurityManager
checkExec
public void checkExec(java.lang.String cmd)
- Overrides:
checkExec in class java.lang.SecurityManager
checkLink
public void checkLink(java.lang.String lib)
- Overrides:
checkLink in class java.lang.SecurityManager
checkRead
public void checkRead(java.io.FileDescriptor fd)
- Overrides:
checkRead in class java.lang.SecurityManager
checkRead
public void checkRead(java.lang.String file)
- Overrides:
checkRead in class java.lang.SecurityManager
checkRead
public void checkRead(java.lang.String file,
java.lang.Object context)
- Overrides:
checkRead in class java.lang.SecurityManager
checkWrite
public void checkWrite(java.io.FileDescriptor fd)
- Overrides:
checkWrite in class java.lang.SecurityManager
checkWrite
public void checkWrite(java.lang.String file)
- Overrides:
checkWrite in class java.lang.SecurityManager
checkDelete
public void checkDelete(java.lang.String file)
- Overrides:
checkDelete in class java.lang.SecurityManager
checkConnect
public void checkConnect(java.lang.String host,
int port)
- Overrides:
checkConnect in class java.lang.SecurityManager
checkConnect
public void checkConnect(java.lang.String host,
int port,
java.lang.Object context)
- Overrides:
checkConnect in class java.lang.SecurityManager
checkListen
public void checkListen(int port)
- Overrides:
checkListen in class java.lang.SecurityManager
checkAccept
public void checkAccept(java.lang.String host,
int port)
- Overrides:
checkAccept in class java.lang.SecurityManager
checkMulticast
public void checkMulticast(java.net.InetAddress maddr)
- Overrides:
checkMulticast in class java.lang.SecurityManager
checkMulticast
public void checkMulticast(java.net.InetAddress maddr,
byte ttl)
- Overrides:
checkMulticast in class java.lang.SecurityManager
checkPermission
public void checkPermission(java.security.Permission perm)
- Overrides:
checkPermission in class java.lang.SecurityManager
checkPermission
public void checkPermission(java.security.Permission perm,
java.lang.Object context)
- We avoid code like this:
t = new Thread();
t.setContextClassLoader(new com.dynamide.security.DynamideClassLoader());
We dissallow any and all context class loaders.
- Overrides:
checkPermission in class java.lang.SecurityManager
checkPropertiesAccess
public void checkPropertiesAccess()
- Overrides:
checkPropertiesAccess in class java.lang.SecurityManager
checkPropertyAccess
public void checkPropertyAccess(java.lang.String key)
- Overrides:
checkPropertyAccess in class java.lang.SecurityManager
checkPropertyAccess
public void checkPropertyAccess(java.lang.String key,
java.lang.String def)
checkTopLevelWindow
public boolean checkTopLevelWindow(java.lang.Object window)
- Overrides:
checkTopLevelWindow in class java.lang.SecurityManager
checkPrintJobAccess
public void checkPrintJobAccess()
- Overrides:
checkPrintJobAccess in class java.lang.SecurityManager
checkSystemClipboardAccess
public void checkSystemClipboardAccess()
- Overrides:
checkSystemClipboardAccess in class java.lang.SecurityManager
checkAwtEventQueueAccess
public void checkAwtEventQueueAccess()
- Overrides:
checkAwtEventQueueAccess in class java.lang.SecurityManager
checkPackageAccess
public void checkPackageAccess(java.lang.String pkg)
- Overrides:
checkPackageAccess in class java.lang.SecurityManager
checkPackageDefinition
public void checkPackageDefinition(java.lang.String pkg)
- Overrides:
checkPackageDefinition in class java.lang.SecurityManager
checkSetFactory
public void checkSetFactory()
- Overrides:
checkSetFactory in class java.lang.SecurityManager
checkMemberAccess
public void checkMemberAccess(java.lang.Class clazz,
int which)
- Overrides:
checkMemberAccess in class java.lang.SecurityManager
checkSecurityAccess
public void checkSecurityAccess(java.lang.String provider)
- Overrides:
checkSecurityAccess in class java.lang.SecurityManager
Copyright © 2001-2013 DYNAMIDE.COM. All Rights Reserved.