我在Spring和Struts中看到了数百个示例,其中在视图中使用了模型bean,我想知道它是否是一个漏洞,解决它的最佳方法是什么。
一个愚蠢的例子。我们有一个模型bean:
public class User {
private String name;
private String pass;
//getters and setters
}
我们必须观看(jsp)
在服务层(应该是视图的抽象)中,我们有一个方法:
if(pass.isEmpty)
createNormalUser();
else
createAdminUser();
在USERVIEW中,入侵者可以使用两个字段(例如,修改浏览器中的数据),因为它们在两个视图(USERVIEW和ADMINVIEW)中打开,因为它是相同的bean(用户)。
好吧这是一个愚蠢的例子,但在复杂的webapp中,你不能保证模型bean的这种行为完全被避免,因为你可以拥有一个复杂的业务逻辑和数百个修改bean可能产生不需要的行为的情况。更重要的是,请记住,服务层应独立于视图层。
因此有必要在控制器层(Spring中的控制器或struts中的操作)中控制它。
解决问题的最佳方法是什么?