Chrome访问jdon

chrome访问jdon速度贼快啊,比IE和FF快很多,爽!!

我现在基本都用chrome,只有上银行网站才用IE,说明这些银行网站软件开发者还是摆脱不了传统C/S思路,在浏览器上还搞个绑定IE的软件,象那个招商银行大众版 等都不能再chrome上使用,网上银行它开得最早,现在变成最落后了。

IE经常有病毒,前两天的0Day,分析XML还会中毒,总是服了微软,过去它一家独大,总是说:换了其他也是这样千疮百孔,现在有了chrome,看它IE还能牛多久。

Chrome对Jdon.com这样ajax网站JS速度比较快,因为采取服务器端压缩包处理,Chrome这方面解压还有缓存等可能做的很好,比IE8快多,不过IE8调试javascript定位不错。

总之,对于我来说,经常用的是Chrome,IE偶尔拿出来用用。

最近一个烦恼的事情,就是Chrome和FF都不能象IE那样将浏览器中输入内容拷贝到clipborad中,原来老外用的一个clipboard.swf利用flash 9漏洞实现的功能在flash10下已经失去作用,这样,Chrome和FF下发帖,就无法自动备份到自己电脑的clipborad中了...期待解决方案。


不能拿cookie解决吗?下面给个jquery的方案,只实现了复制内容的功能,不知道合不合用。
<script src="../jquery-1.2.6.min.js"></script>
<script src="../jquery.cookie.js"></script>


<script>
$(document).ready(function(){
writeMessage();
});
function writeMessage(){
var message=$("message").val();
$.cookie("myMessage",message);
setTimeout('writeMessage()',1000*60*2);
}
function reloadMessage(){
var message=$.cookie("myMessage");
alert(message);
$("message").val(message);
}
</script>

<textarea id="message"></textarea>
<a href="javascript:void(0);" onclick="reloadMessage();">reload</a>
其中jquery-cookie在这:
http://plugins.jquery.com/project/Cookie,代码没几行,不用jquery也很方便实现

使用Clipboard也许并不是一个好的选择,任意修改用户Clipboard中的数据会降低用户的体验度。比如我工作的时候copy了一点东西,然后上来看看写了点回复,回来居然没了,是不是让我觉得很费解??

顺便说一下 chrome 的安全性是所有浏览器中最差的。银行不会采用没有经过市场检验的技术。同时从商业成本考虑也首先会考虑使用大众群体的使用情况。
从技术角度,因为只有IE支持activex 控件技术,为了保障你输入密码的安全性(不被木马拦截),只能使用activex控件。所以IE还将长期占领这个市场。

Activex和java applet哪个更安全呢?

兴业网上银行采取的是applet,速度没感觉慢。招商银行一开始就走微软路线,所以漏洞最多,现在又专门搞一个看门狗:需要你再下载一网盾,一层看一层,这种穷尽的安全策略我认为是最蠢的。

我个人不看好Activex,病毒木马都是从这个口进来的,而applet目前是最安全的网页插件,以上只是个人观点,不一定正确。

所以,这里就涉及一个重新需要思考的问题,浏览器这样的瘦客户端到底应该是什么样?过去因为微软垄断和误导,使很多人对浏览器标准都产生歧义,我个人认为:浏览器就是一个平台,一个RIA富客户端平台,这个平台上可以嵌入JavaFX appplet flash 和ActiveX(如果你微软想进来的话,而不是守着你IE一亩三分地)。

企业安全策略不应该是平台浏览器考虑的,而是applet/javaFX或flash这些插件来完成的。浏览器平台提供更丰富的动态GUI支持,或者简单地说:就是取代操作系统,未来PC机只要装一个浏览器软件就可以,后台强大的云计算提供服务,这是未来互联网格局,微软肯定玩完,现在赶也来不及。
[该贴被banq于2008-12-16 10:28修改过]

呵呵,微软倒不倒跟我无关,只要还有软件这个行业我就还有饭吃。

至于Applet还是ActiveX更加安全我想很容易分析,ActiveX更加本地话,功能性更强一些,所以单纯从安全性而言Applet是没有办法相比的。而且Applet只有兴业来用也说明了这个问题。

ActiveX的毛病也就在于权限过大,直接与系统当前用户权限相同,这对于Linux而言不是问题,但是对于习惯使用Administrator的Windows用户是致命的问题,所以本身不是在ActiveX上,而是在Windows上。

未来的发展是RIA,我想这个可能不需要讨论,但是是什么样子可能大家都说不准。Flash在IE上就是ActiveX,在FF也是一个插件,现在由于Flash的安全问题也已经日益突出,Adobe也在解决该问题。

不过要实现RIA,安全问题必须由浏览器解决。不过是Flash还是ActiveX,很多信息还是依赖于浏览器(Cookie,证书),如果服务器端还是WEB服务,则协议必然是HTTP,HTTPS协议,这都是由浏览器做的事情,而不能由其上面的控件决定。

至于云计算可以看我对于首页云计算那个帖子的回复

看来我们的观点还是不一样。

>单纯从安全性而言Applet是没有办法相比的。而且Applet只有兴业来用也说明了这个问题。

这句话我很不认同啊,不过争论开来要写很多,我一直也就是奇怪:IBM很早就建议applet来保存cookie等重要信息,applet这么重要的一个安全好的技术被那么多人忽视,真是不得其解啊,也许很多人持有楼上观点,我想这些由来已久不是靠我一人三言两语就能改变的。

>不过要实现RIA,安全问题必须由浏览器解决。
这个也很不认同啊,象applet这样安全得都不能访问本地的技术,还有Java本身JAAS的安全性,Java applet/JAVAFX安全技术做到家了,这些都不是白做吧。

不同的背景促使不同的设计,总之,我们如果求同存异,探讨出一个好的浏览器标准到底应该怎样,也许更有意义啊。

我希望你首先明白什么是TCP/IP协议,什么是HTTP协议,不管你用任何技术,当你的服务器是Web服务器,那么传输协议只能是HTTP协议,也就是是说你发送的报头的样式一定是类似下面这个样子的

GET http://download.microtool.com
Host: download.microtool.com
Accept: */*
Pragma: no-cache
Cache-Control: no-cache
Referer: http://download.microtool.com/
User-Agent: Mozilla/4.04[en](Win95;I;Nav)
Range: bytes=554554-

用httpwatch你可以轻易的看到你发送给服务器端的信息,那么在网络上传输我就可以截获信息。用HTTPS协议也不过是通过SSL加密的方式进行加密。从本质上来说是还是通过Socket进行传输的。只要你使用浏览器这个是不可能改变的。除非你通过ActiveX控件自己实现与服务器的通讯过程。

applet能访问本地。

applet得安装java,这个对很多人尤其是对非技术人来说都是不愿意的事吧,applet用得少,js用得多,applet win不直接支持,js浏览器直接支持,我想这就够了,js必然是首选,啥时候os都内置了applet的支持applet才有发展,而那时候市场怎么样还是个关键问题。市场在技术的应用、普及、发展阶段绝对是个重要中的重要问题,这不是技术手段能解决的。

大家都认为ie没啥标准可言,为啥还用呢?因为它有市场啊,安装win必然送个ie,win又那老多用户。技术人改用ff等标准的了,普通用户只需要最简单的操作,安装个ff、opera、chrome我就是不愿意,况且各大网站都对ie提供了特殊的支持,ibm绝对不会放弃ie这大块用户。这是标准在妥协用户,不是标准在引导用户。

技术想发展不单看它本身的价值,还得看它应用的价值,再好的东西用起来代价高也是白费,没人用更是白费,ejb2就是,有大批人就是看着它那老些空方法不舒服,就是看着那老些继承接口不顺眼,spring抢着市场了,它是不是支持分布(没有分布软件前的那段时间)不说,它让很多人觉得突然舒服了,尽管ide这么强大已经做足了自动生成工作,还是放弃了ejb2,大批人并不追求架构上的优秀,追求的是对程序员友好点的东西,ejb2显然不太友好。

市场一旦建立就不是那么容易丢掉的,很少有大公司一夜间就不见了,最起码是被合并到哪去了,那些市场仍旧在。等win和ie完蛋绝对不可能,它们自己也在改变着自己,一旦某个特别的、非标准的功能被大量使用,它的市场就更牢靠了,别人想进都很难。


import java.applet.Applet;
import java.math.BigInteger;

public class UnionBrowserRSAMDL extends Applet
{

BigInteger e;
BigInteger n;
BigInteger in;
int pinMaxLen;
byte pinBlock[];

public UnionBrowserRSAMDL()
{
e = new BigInteger("65537");
pinMaxLen = 128;
}

private String genRandom(int i)
{
byte abyte0[] = new byte[i];
for(int j = 0; j < i; j++)
{
Integer integer = new Integer((int)((float)Math.random() * 57F) + 65);
abyte0[j] = integer.byteValue();
}

return new String(abyte0);
}

public void init()
{
pinMaxLen = 128;
e = new BigInteger("65537");
}

private BigInteger mod(BigInteger biginteger, BigInteger biginteger1, BigInteger biginteger2)
{
BigInteger biginteger3 = null;
try
{
biginteger3 = biginteger.modPow(biginteger1, biginteger2);
}
catch(ArithmeticException arithmeticexception)
{
return null;
}
return biginteger3;
}

public String PkEncryptAPin(String s, String s1)
{
if(s1.length() < 6)
{
int i = s1.length();
for(int k = 0; k < 6 - i; k++)
s1 = s1 + " ";

}
int j = s1.length();
if(j >= pinMaxLen - 2)
return null;
Integer integer = new Integer(j / 10 + 48);
Integer integer1 = new Integer(j % 10 + 48);
byte abyte0[] = {
integer.byteValue(), integer1.byteValue()
};
String s2 = new String(abyte0) + s1 + genRandom(pinMaxLen - j - 2);
pinBlock = s2.getBytes();
in = new BigInteger(pinBlock);
BigInteger biginteger = new BigInteger(s, 16);
String s3 = mod(in, e, biginteger).toString(16);
int l = s3.length();
if(l < 256)
{
int i1 = 256 - l;
String s4 = "";
for(int j1 = 0; j1 < i1; j1++)
s4 = s4 + "0";

return s4 + s3;
} else
{
return s3;
}
}

public String PkEncryptEPin(String s, String s1, String s2)
{
int i = 2 + s1.length() + 2 + s2.length();
if(i >= pinMaxLen - 2)
return null;
Integer integer = new Integer(i / 256);
Integer integer1 = new Integer(i % 256);
byte abyte0[] = {
integer.byteValue(), integer1.byteValue()
};
int j = s1.length();
Integer integer2 = new Integer(j / 10 + 48);
Integer integer3 = new Integer(j % 10 + 48);
byte abyte1[] = {
integer2.byteValue(), integer3.byteValue()
};
int k = s2.length();
Integer integer4 = new Integer(k / 10 + 48);
Integer integer5 = new Integer(k % 10 + 48);
byte abyte2[] = {
integer4.byteValue(), integer5.byteValue()
};
String s3 = new String(abyte0) + new String(abyte1) + s1 + new String(abyte2) + s2 + genRandom(pinMaxLen - i - 2);
pinBlock = s3.getBytes();
in = new BigInteger(pinBlock);
BigInteger biginteger = new BigInteger(s, 16);
String s4 = mod(in, e, biginteger).toString(16);
int l = s4.length();
if(l < 256)
{
int i1 = 256 - l;
String s5 = "";
for(int j1 = 0; j1 < i1; j1++)
s5 = s5 + "0";

return s5 + s4;
} else
{
return s4;
}
}
}

--------------------------------------------
这是兴业银行那个applet的源代码,干什么我想你我都明白
他的输入是INPUT,也就是我的木马可以通过枚举IE窗体对象来监控INPUT的输入,套取密码。
如果你使用兴业的网银希望你使用软键盘,这样会安全一些。
这还只是他个人银行的登陆界面,信用卡的直接就可以看到。实在不知道他们的安全人员做什么的。

[该贴被ACoder于2008-12-16 16:35修改过]

>只要你使用浏览器这个是不可能改变的。除非你通过ActiveX控件自己实现与服务器的通讯过程。

applet等胖客户端都是自己实现与服务器的通讯过程。

兴业银行的INPUT applet至少可以在chrome上运行啊,招商银行的同样的input需要ActiveX。这两者都需要软键盘才更安全些。

>applet得安装java,这个对很多人尤其是对非技术人来说都是不愿意的事吧
flash也需要下载安装,看来这里面还是有些根本原因我们没有找到,可能是过去Java太慢原因,现在双CPU 2G内存的笔记本才3000元多一些,下载Java和flash同样没感觉。

所以,前面我提到的拷贝到clipeboard方案中,我看到有老外也推荐用applet来实现,比如上传什么的,反而更安全,有人不是在问企业上传下载如何考虑安全策略吗?


[该贴被admin于2008-12-16 17:40修改过]

>>applet等胖客户端都是自己实现与服务器的通讯过程。
这样跟浏览器根本就没关系了,IE,FF还是chrome有什么关系??如果无关为什么google要做浏览器??而且它跟FF还有三年的协议。Applet与ActiveX的设计初衷不是为了取代浏览器,而是为了增强浏览器的功能的。



<tr>
<td width="15%" class="login_text">登录方式:</td>
<td width="15%">
<input type="hidden" name="wlw-select_key:{actionForm.loginMethod}OldValue" value="true"/><select name="wlw-select_key:{actionForm.loginMethod}" id="wlw-select_key:{actionForm.loginMethod}" onchange="changLoginMethod()"><option value="0" selected="selected">网银客户号登录</option>
<option value="1">银行账号登录</option>
<option value="2">自定义用户名登录</option></select>
</td>
</tr>

<tr id="personalId">
<td height="20" width="15%" class="login_text" id="desc">客 户 号:</td>
<td width="28%">
<input type="text" name="{actionForm.customerId}" maxlength="8" value="" style="width:100px" class="login_form"/>
</td>
</tr>
<tr id="trpwd">
<td height="20" class="login_text">登录密码:</td>
<td>
<input type="password" name="{actionForm.password}" maxlength="8" value="" style="width:80px" class="keyboard"/>
<input type="hidden" name="{actionForm.loginPwd}" value="" id="{actionForm.loginPwd}"/>

</td>
</tr>

这是兴业的页面源代码,用的就是普通的input,不是applet,Applet的源代码我已经贴出来了,明显是为了在提交之前进行加密的。所以这个Applet只是封装了JS的功能。(它的信用卡登陆就更烂了,直接用工具就能看到密码,证书登陆我没有证书)