首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaEE - RMI码注入

JavaEE - RMI码注入
EN

Stack Overflow用户
提问于 2015-02-17 16:28:41
回答 2查看 816关注 0票数 0

我正在使用EJB容器和EJB开发一个JavaEE应用程序。

假设我有一个班级学生:

代码语言:javascript
复制
class Student{
 private int id;

 private String resume;

 public void clearXss(){
  ///some logic to clear resume from js scripts
 }
}

我有一个独立的客户机和JavaEE服务器。客户端通过RMI连接到EJB容器。客户端传递学生类的对象。

我的问题是:在object方法上调用clearXss是安全的,还是有必要使用外部方法?我是说:

代码语言:javascript
复制
class MyBean{
 private void save(Student student){...}

 public void saveStudent(Student student){
  sudent.clearXss();
  save(student);
 }
}

vs

代码语言:javascript
复制
class MyBean{
 private void save(Student student){...}

 private String purifyXss(String string){...}

 public void saveStudent(Student student){
  student.setResume(purifyXss(student.getResume()))
  save(student);
 }
}

我害怕的是调用我们从不受信任的客户端获得的对象的安全方法。所以这才是首要的安全问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-25 11:26:42

这不是一个简单的问题。一方面,您非常担心服务器端的代码注入。另一方面,据我所知,在RMI技术中,客户机对象将只序列化客户端没有方法的类数据,并在服务器端用类的服务器版本还原(反序列化),然后这两个变体都可以避免服务器端的方法注入。

票数 0
EN

Stack Overflow用户

发布于 2015-03-02 09:59:54

我不明白问题的两部分。

  1. 关于对象内部的安全方法的问题。通常,与安全性相关的一切都不应该与不处理安全域的对象有关。从什么时候开始,学生对象应该如何处理它的简历在某些情况下是安全的或不安全的。
  2. RMI序列化和反序列化对象。通常,这意味着根本不转移任何类型的字节码,也不加载任何类。您所指的是从类(文件)服务器按需下载类文件。正如我所知,你控制着这些服务器。您可以防止客户端发送未签名的类。所以这没什么大不了的。

最后,我要说:

  • 首先,将每个安全方面从域对象中提取出来(除非它们属于该域)。为此创建一个实用程序类/ API。
  • 其次,检查类服务器控件以及它们是如何在RMI系统(http://docs.oracle.com/javase/tutorial/rmi/index.html)中实现/配置的。他们在你的控制之下。如果任何客户端能够发送您的服务器类文件,而您的服务器必须接受它们,这将是一个很大的问题。因此,有一些简单的解决办法。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28566201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档