假设有三个 JFrame (Login Frame, admin Frame, user Frame)当user login 时判断 显示哪张 Frame..?
这里发现问题…如果用户懂得 重新 直接 new adminFrame();
那就可以逃避 Login 认证..就可以直接进入 admin mode..所以请问如防范这个问题..?

解决方案 »

  1.   

    用户没有这操作的权限吧,楼主不会把3个Frame都暴露给用户了吧
      

  2.   

    那个用户怎样new adminFrame();?
    又从哪里启动?
      

  3.   

    用户还能new? 那就没法了吧.
      

  4.   

    封装了的 jar, 用户可以解压缩…便会得到所有Class..接着用户重新写一个 main class..
    呼出这个….New AdminFrame(adminUser);
    因为通常都是只会传入admin name
    好像以下:
    If login ( name, passwd){
    If(name == admin)
    New adminFrame(name);
    Else
    New userFrame(name)
    }else{
    error
    }
      

  5.   

    一般的验证不是光靠不同的窗口来控制吧,而且在每个类的内部也应该有权限的校验的,
    另外一般编译后的class文件也会用到混淆器,而不是那么容易就可以反编译出来的。
    个人的一点简介,跟楼主讨论
      

  6.   

    答:1)在所有的关键的业务逻辑处,要检查用户是否Login 认证过.(如同:WEB应用下用户想绕过Login ,想直接通过URL来直接访问应用逻辑一样)
    2)为防止用户直接new admin Frame,除了混淆器外,方法之一(仅供你参考):你可将admin Frame的class做成非标准的class文件(如:对class文件进行变换),然后在你的应用运行时,先装载你自己的ClassLoader,然后利用自己的ClassLoader来对admin Frame的非标准的class文件运行时在内存装载时进行反变换成标准class,再自动交由JVM执行.
      

  7.   

    由于admin Frame是非标准的class文件,用户想直接new admin Frame来执行会报错的.
      

  8.   

    怎样可以实现像web 一样, 用Session 控制及验证?
      

  9.   

    怎样可以实现像web 一样, 用Session 控制及验证?
    防止非法进入其它Frame.
      

  10.   

    怎样可以实现像web 一样, 用Session 控制及验证?
    防止非法进入其它Frame
      

  11.   

    用户不可能new adminFrame()的,除非用户可以修改源代码,可以用混淆器防止用户反编译。