易截截图软件、单文件、免安装、纯绿色、仅160KB

[转]Java Web应用的Policy安全配置值得深思

信息来源:邪恶八进制信息安全团队(www.eviloctal.com)
Author:kj021320
转载请注名出处。
Java应用程序环境的安全策略,详细说明了对于不同的代码所拥有的不同资源的许可,它由一个Policy对象来表达。
为了让applet(或者运行在SecurityManager下的一个应用程序)能够执行受保护的行为,例如读写文件,applet(或Java应用程序)必须获得那项操作的许可,安全策略文件就是用来实现这些许可。
Policy对象可能有多个实体,虽然任何时候只能有一个起作用。
当前安装的Policy对象,在程序中可以通过调用 getPolicy方法得到,也可以通过调用setPolicy方法改变。Policy对象评估整个策略,返回一个适当的Permissions对象,详细说明那些代码可以访问那些资源。
可见 通过配置policy来达到控制SecurityManager,在Applet RMI上面已经见到很大的成效。
但很多现在WEB容器如TOMCAT RESIN等等都通过指导用户配置policy来管理自己JAVA网站的安全。
对于初级hacker 可能会达到一定成效,但是我个人持保留意见。
首先简单看看JAVA WEB容器webapps的管理策略。
每个app都是占用该容器同一进程,而不同于各自的包管理,请求控制都是采用 MultiThread + ClassLoader 的.
所以写serlvet/filter public的属性需要注意并发,而各个webapp都有各自的lib等等。
至于这样的对于安全来说会极其恶心...
问题1: A webapp 调用了 system.exit 导致WEB容器挂了。
问题2: A webapp 因为代码质量问题内存泄露,导致B webapp访问不了。
问题3: webapp 调用 runtime.exec 执行系统命令攻击操作系统。
而针对以上这些问题,我估计sun应该比较尴尬的了,容器提供商们都只能采用了java自带的操作方法。就是配置policy
如何配置呀?
TOMCAT可以看看 http://tomcat.apache.org/tomcat-5.5-doc/security-manager-howto.html
RESIN 可以搜索 <<Resin虚拟主机的java安全沙箱设置>>
基本上就是限制用户操作 java.io java.net java.awt java.runtime java.util ...
但是很遗憾告诉你,这些都是可以bypass的!为什么?因为JAVA里面沙箱限制都是在java class层控制的
而 采用 reflect 可以绕过这些进而操作JNI等等...如何操作可以看这paper
http://blog.csdn.net/kj021320/archive/2007/10/10/1819205.aspx
那如果把reflect也同样限制了呢?跟applet一样严格! OK 现在我们来看看实际情况
首先webapp 常用的框架 spring  ibatis  hiber


相关文档:

java 将EXCEL表格数据转换成XML格式

有时候我门需要把EXCEL表格中的数据转换成XML格式 这需要用到JXL(分析EXCEL)包和JDOM包(构成XML)
import java.io.*;
import jxl.*;
import org.jdom.Element;
import org.jdom.Document;
import org.jdom.output.XMLOutputter;
/**
 *
 * @author guo
 */
public class EtoX {
    ......

Java Application 直接通过jndi连接数据库

来源:http://www.ej38.com/showinfo/java-132636.html
使用jar包:
 commons-pool-1.5.3.jar,tomcat-naming-common.jar,commons-pool-1.5.3-bin.zip,commons-dbcp.jar
 注意:jdbc 驱动要与数据库兼容.
 package test.comm;
import java.sql.Connection;
import java.sql.SQLException;
import java.u ......

Java+Mysql的数据库查找实现


public class select {
 public List XiuGai_select(String keyword){
  List list=new ArrayList();
        Connection conn = null;
  Statement stmt = null;
  String sql=null;
  ResultSet res = null;
  get ......

java上溯

JAVA是强类型的语言。当引用对象的时候,如果是上溯的话,需要强制转换。如你上面写的,
PiePlot p = (PiePlot)Plot,这就是上溯,生成实例时引用的是父类,需要强制转换,所以就需要加个(PiePlot)来声明Plot(Plot是父类)。 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号