想做一个ACM系统(就是别人在浏览器提交代码,然后在后台编译和运行提交的代码,然后判断结果对不对),有两个问题不知道怎么解决:
1,怎么防止不安全的代码,象别人可以写跟系统有关的代码,如操作文件啊,执行进程啊,怎样解决这个问题?
2,用Process类运行编译后的文件,怎么知道其占用的内存多大?

解决方案 »

  1.   

    在java中好像没有语言支持直接构造一个安全沙箱,防止不安全代码,是不是可以考虑禁止导入某些包或者类?检测占用内存也是个问题,很难做到准确检测。http://www.javaworld.com/javaworld/javaqa/2003-12/02-qa-1226-sizeof.html
      

  2.   

    1,怎么防止不安全的代码,象别人可以写跟系统有关的代码,如操作文件啊,执行进程啊,怎样解决这个问题?
      这些都JAVA早就实现了~~可以用设置安全管理  APPLET就是这样实现的
    2,用Process类运行编译后的文件,怎么知道其占用的内存多大?
     JAVA对于内存肯定找不到办法的~~
      

  3.   

    我忘了说明一点,别人提交的代码可以是其他语言的,象C语言,java 用Process类编译运行其他语言怎么防止他们执行不安全代码
      

  4.   

    2,用Process类运行编译后的文件,怎么知道其占用的内存多大?
    我觉得这个挺困难的,据我所知,好象没有什么办法,我所知道的只有Runtime的一些内存的一些方法,但都没有什么用.
      

  5.   

    在统计占用内存上,是否可以用其它语言来实现封装成DLL,提供给JAVA调用来统计