Security Manager Program Fragments
Zamples has a Security Manager that restricts access to various computing resources.
The examples on this page exercise the security manager. The security
manager is configurable.
File Access
Security Granted
|
|
String file = "playpen/file.txt";
try {
File f = new File(file);
out.println(file + " does " + ((f.exists()) ? "" : "not ") + "exist");
} catch (SecurityException e) {
out.println("Cannot check if " + file + " exists.");
}
|
Typical output
playpen/file.txt does not exist
Security Denied
|
|
String file = "/file.txt";
try {
File f = new File(file);
out.println(file + " does " + ((f.exists()) ? "" : "not ") + "exist");
} catch (SecurityException e) {
out.println("Cannot check if " + file + " exists.");
}
|
Typical output
Cannot check if /file.txt exists.
|
|
File roots[] = File.listRoots();
if (roots==null || roots.length==0) {
out.println("No roots found (security manager probably suppressed them)");
} else {
for (int i = 0; i < roots.length; i++)
out.println(roots[i].getAbsolutePath());
java.io.File files[] = roots[0].listFiles();
for (int i = 0; i < files.length; i++)
out.println(files[i].getAbsolutePath());
} |
Typical output
No roots found (security manager probably suppressed them)
Security Manager Check
|
|
out.println(System.getSecurityManager());
java.io.File root = new java.io.File("/");
String[] filesAndDirs = root.list();
for (int i=0; i<filesAndDirs.length; i++) {
out.println( filesAndDirs[i] );
} |
Typical Output
java.lang.SecurityManager@1127b52
java.security.AccessControlException: access denied (java.io.FilePermission / read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:269)
at java.security.AccessController.checkPermission(AccessController.java:401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:524)
at java.lang.SecurityManager.checkRead(SecurityManager.java:863)
at java.io.File.list(File.java:913)
at org.apache.jsp._82D6A58DD5B1D92D6EEEBAC16017E541_jsp._jspService(_82D6A58DD5B1D92D6EEEBAC16017E541_jsp.java:59)
Memory Check
|
Runtime runtime = Runtime.getRuntime();
long free = runtime.freeMemory();
long total = runtime.totalMemory();
System.out.println("Available memory is " + free);
System.out.println("Total for the JVM is " + total); |
Typical Output
Available memory is 3594576
Total for the JVM is 17072128
Gunning For Passwords
No, we aren't crazy. Zamples has special provisions to guard against mischief.
Java Version
|
String file = "/etc/passwd";
try {
BufferedReader d = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String line;
while((line=d.readLine())!=null)
System.out.println(line);
} catch (Exception e) {
System.out.println(e.getMessage());
} |
Typical output
root:x:0:0:root:/root:/bin/bash
Python Version
|
import pprint
f = file('/etc/passwd')
pprint.pprint(f.readlines()) |
File Walker
|
|
<%! public void iterate(File file, JspWriter out) throws IOException {
String[] list = file.list();
StringTokenizer st = new StringTokenizer(file.getPath(), "/");
String einr = "";
for (int i=0; i<st.countTokens(); i++)
einr += " ";
for (int i=0; i<list.length; i++) {
out.println(einr + list[i]);
File nextFile = new File(list[i]);
if (nextFile.isDirectory())
iterate(nextFile, out);
}
}%>
<% iterate(new File("/"), out); %> |
Typical output
java.security.AccessControlException: access denied (java.io.FilePermission / read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:269)
at java.security.AccessController.checkPermission(AccessController.java:401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:524)
at java.lang.SecurityManager.checkRead(SecurityManager.java:863)
at java.io.File.list(File.java:913)
at org.apache.jsp._82D6A58DD5B1D92D6EEEBAC16017E541_jsp.iterate(_82D6A58DD5B1D92D6EEEBAC16017E541_jsp.java:15)
at org.apache.jsp._82D6A58DD5B1D92D6EEEBAC16017E541_jsp._jspService(_82D6A58DD5B1D92D6EEEBAC16017E541_jsp.java:73)
Add New Code Samples Here
If you have code samples that don't fit into any of the topics above which you would like to contribute,
please put them here.
We'll sort them out into their own sections as appropriate later.
|
| to add a new posting or reply to an existing posting. |
|
|