0

我正在开发GWT具有许多不同形式的应用程序。这些表单的可见性取决于授权用户的类型。换句话说,我想做以下事情:

String type = rpc.getUserType(); // ask from server only ONCE

if(type.equals("advancedUser"))
{
   ContentPanel advPanel= new ContentPanel();
   add(advPanel);
}

if(type.equals("admin"))
{
   ContentPanel adminPanel= new ContentPanel();
   add(adminPanel);
}

我的问题如下:是否只从服务器获取用户类型一次并在任何地方使用此变量安全?我的意思是有没有可能改变这个变量(如果它存储在客户端)?

我的朋友告诉我,GWT 在服务器端准备 html,所以我可以安全地将类型存储在一个变量中并使用它——没有人可以访问它。

但我认为,我必须在每次构造之前进行 rpc 调用,if(userType=blah-blah-blah) add(something)因为我认为 GWT 将我的 Java 代码转换为在客户端运行的 Javascript,并且所有变量都可以使用 ArtMoney 等程序进行修改。

4

1 回答 1

1

我的问题如下:是否只从服务器获取用户类型一次并在任何地方使用此变量安全?我的意思是有没有可能改变这个变量(如果它存储在客户端)?

是的,这是最可能和最强大的解决方案。更多我想建议,让它static

public static String USER_TYPE = rpc.getUserType();  

该变量应该首先使用一个值初始化,onModuleLoad并且应该在整个应用程序中。

但我认为,我必须在每次构造之前进行 rpc 调用,例如 if(userType=blah-blah-blah) add(something)

不,这会引发性能问题和server通过网络进行不必要的调用。

因为我认为 GWT 将我的 Java 代码转换为在客户端运行的 Javascript,并且所有变量都可以使用 ArtMoney 等程序进行修改。

GWT 足够安全并使用Obfuscated选项编译您的模块,这使您的代码在浏览器中不可读。

仅通过混淆就可以防止所有易受攻击的事物,还需要采取其他一些步骤才能快乐地入睡:)

我建议仔细阅读 GWT安全文档

除此之外,

在服务器端保存或处理数据时,需要严格检查您在客户端所做的工作,以免您出现这种情况。

在服务器端

if(clientsideUserType.equals(serverSideUserType))  // 
{
 // Then only insert/process data
}
于 2013-10-30T04:47:25.783 回答