【问题标题】:How safely generate HTML pages on GWT?如何在 GWT 上安全地生成 HTML 页面?
【发布时间】:2013-10-30 04:43:35
【问题描述】:

我正在开发具有多种不同形式的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 等程序。

【问题讨论】:

    标签: java gwt rpc


    【解决方案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 security documentation

    除此之外,

    在服务器端保存或处理数据时,需要严格检查您在客户端完成的操作,以免出现此类情况。

    在服务器端

    if(clientsideUserType.equals(serverSideUserType))  // 
    {
     // Then only insert/process data
    }
    

    【讨论】:

    • 好的,感谢您分享您的观点,我将尝试依靠混淆。如果一些很酷的黑客能够对 java 脚本进行去混淆,我可以简单地在每个“render-on-condition”构造之前添加 rpc 调用)
    • @Baurzhan 更新了我的帖子。不要让黑客用你的应用做一些很酷的事情:)
    猜你喜欢
    • 2015-06-14
    • 2011-10-21
    • 1970-01-01
    • 2014-12-02
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2012-01-08
    相关资源
    最近更新 更多