动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.Java学习备忘录(一)安装篇.
.在JAVA开发中的中文处理问题及解.
.Java连结数据库内幕.
.Java应用性能的提升.
.J2EE 1.5 提供的另一种形式的for.
.诊断 Java 代码:设计轻松的代码.
.如何开发会话Bean(无状态会话Be.
.【新手必读】JAVA入门及FAQ.
.Compass 0.5, Java 搜索引擎框架.
.利用视图链接使Eclipse应用程序更.
.Struts常见错误及原因分析.
.Sender ID框架规范概述.
.将DBMS存储过程封装为会话EJB组件.
.拷贝文件的源代码.
.开发手机游戏的一点心得(二).
.为JAVA性能而设计(2).
.剖析事件监听和匿名类.
.Java的破解和反破解.
.eclipse-SDK-3.1M4-win32.
.Java网络编程之传输控制协议(三).

用Java Applet保护网页的缺陷

发表日期:2008-1-5 |



作者:张波< mailto:zhangbo@nsfocus.com >  
主页:http://www.nsfocus.com  
有不少主页作者喜欢用一些Java Applet来保护一些比较敏感的页面,比如给某个页面加上密码等。首先我们注重到两个事实:1、由于Java Applet是要下载到客户端执行的,所以任何人都可以得到其*.class文件,从而可以利用Java反编译器或者反汇编器对其进行逆向工程,从而分析出其中所用到的算法和涉及到的隐藏的URL;2、另外,Java Applet能够读取的URL也是任何人都可以读取的。这是用Java Applet做网页保护的先天性的缺陷。下面举两个例子来说明。

一、islogin.class

islogin.class的正式名称是Applet Web PassWord(http://shareit1.element5.com/programs.Html?prodUCtid=106801&language=English&reseller=IS)。其保护方式为:先将用户名、密码、正确的URL(即所要保护的页面的URL)经过加密之后嵌入到html源码中,作为启动该applet的参数。当访问者输入正确的用户名和密码之后,该applet才把正确的URL显示给来访者,这样只有经过身份认证的来访者才能看到被保护的页面的URL。

下面是一个例子,其中user1、user2就是密文。Applet Web Password的发行包里面带有一个小程序专门根据用户名、密码、被保护的URL生成相应的密文。

<applet code="islogin.class" width="280" height="110">
  <param name="GENERATOR" value="Applet Web Password 2, http://software.ktc.lt">
  <param name="general" value="1651216777215username:password:LOG INhttp://www.somewhere.com/password.htm">
  <param name="user1" value="#lppprqrx\]M3D2Oq\t=pdzy~#g!!{ys##yl`ji~xo##me!pgc">
  <param name="user2" value="olbh##~mhk##fpcrSlhlbfpee#u??#lrig}??5qhqE$8(????">
  <param name="checkpoint" value="2">Your browser doesn't support Java, <br>
or Java capability is turned off.<br>
You are unable to login with Applet Web Password.
</applet>

可见,这种保护方式有先天缺陷。因为嵌有该applet的html的源码是任何人都可以察看的,这样可以得到用户名、密码和URL的密文。而该applet的class文件也可以下载到本地对其解码算法进行分析。有了密文和解码算法,自然可以轻易地得到明文(其实也可以分析Applet Web Password中带的那个加密程序的加密算法,从而找出解码算法,因为它必须采用可逆算法才能恢复要保护的URL),从而直接得到被保护的URL。

经过分析,发现其解码算法非常简单,所以这个applet根本不具实用价值。
下面附上解码程序。其中Encrypted是密文,Decrypted是解出来的明文。

void __fastcall TForm1::OnDecodeClick(TObject *Sender)
{
        char s[1024];
        char ac[1024];
        int  i, j, Total;
        char Key[]= "Default user name";

        Total = Encrypted->GetTextBuf(s, 1024);
        if (Total == 0)
        {
                return;
        }

        for(i = 0, j = 0; i < Total; i++)
if(s[i] == '#')
{
if(s[i + 1] == '#')
{
ac[j] = '#';
j++;
i++;
} else
if(s[i + 1] == 's')
{
ac[j] = ' ';
j++;
i++;
} else
if(s[i + 1] == 'a')
{
ac[j] = '&';
j++;
i++;
} else
if(s[i + 1] == 'l')
{
ac[j] = '<';
j++;
i++;
} else
if(s[i + 1] == 'q')
{
ac[j] = '"';
j++;
i++;
} else
if(s[i + 1] == 'g')
{
ac[j] = '>';
                    j++;
                    i++;
                } else
                if(s[i + 1] == 'u')
                {
                    ac[j] = '\177';
                    j++;
                    i++;
                } else
                {
                    MessageBox(0, "Input error!", "Error", MB_OK MB_ICONERROR);
                    return;
                }
            } else
            {
                ac[j] = s[i];
                j++;
            }

        j = 0;
        for(i = 0; i < Total; i++)
{
char c = Key[j];
c >>= 3;
            ac[i] = (char)(ac[i] ^ c);
            if(j < lstrlen(Key) - 1)
j++;
else
j = 0;
}

ac[Total] = 0;

Decrypted->SetTextBuf(ac);
}

二、PassMaster.class

这个applet的保护方式为:把用户名、密码和要保护的URL以明文形式保存在Web服务器的password.log文件中。Applet初始化的时候要读取密码文件,即password.log要被读到客户端浏览器的cache里,则它必须被配置成任何人都可以读取的,而且它与applet放在同一虚拟目录下。这样就没有秘密可言了。假定applet的URL为
http://www.somewhere.com/PassMaster.class,则只需要在浏览器中输入http://www.somewhere.com/password.log就可以把密码文件存盘,或者直接在浏览器的cache中可以搜索到password*.log。下面是密码文件的样本:

name: = "guest";
password: = "guest";
URL: = "demo.html";

name: = "guest";
password: = "test";
URL: = "done.html";

END_FILE

下面是它操作密码文件的代码片断:

    public void parseFile()
    {
        _fld0102.setText("Reading password log. . .");
        try
        {
            URL url = new URL(_fld0108.getCodeBase(), "password.log");
        .........
     }

即使网站治理员修改了密码文件的存放位置并对密码文件进行了变换,还是可以得到被保护的URL的明文(根本不需要关心用户名和密码),因为我们可以将applet的class文件下载回来分析其所操作的密码文件以及解码算法。

通过搜索引擎,我们可以找到一些嵌有上述applet的页面。由于Java Applet在保护网页的机制方面有先天性缺陷,因此建议不要采用这种相对来说比较偷懒的办法。


上一篇:Eclipse 3.2 Java开发工具的新特性 人气:417
下一篇:用java取得linux系统cpu、内存的实时信息 人气:1090
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-8-21 Nucleus v3.33 多国语言版
2008-8-21 HDWiki v4.0 bulid 080821 UTF-8
2008-8-21 明科在线客服系统 v6.0
2008-8-21 KesionCMS v5.0.2 正式版 utf-8
2008-8-21 KesionEshop v5.0.2 正式版 utf-8
2008-8-21 HDWiki v4.0 bulid 080821 GBK
2008-8-21 新文互动酷站展示系统 v1.5
2008-8-21 Punbb v1.2.20 多国语言版
2008-8-21 QQ头像网 beta
2008-8-16 iLaba Player(小喇叭播放器) v2.
2008-8-16 DoubleClickFix 鼠标双击修正工具
2008-8-16 CrystalCPUID 4.15.2.451
2008-8-16 VeryCD 电驴(easyMule) 1.0.4 Bu
2008-8-16 uTorrent 1.8 Build 11813 - Sta
2008-8-16 比特精灵(BitSpirit) v3.3.2.287
2008-8-16 StayInTune音叉 v1.0 破解版
2008-8-16 iChing《周易》汉化补丁 v1.0
2008-8-16 Starmap星空图v1.0汉化破解版
  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号