首页 > *nix应用编程, Google开源, 浏览器 > 支持火狐和谷歌浏览器的国内网银相关插件技术

支持火狐和谷歌浏览器的国内网银相关插件技术

2014年8月2日 发表评论 阅读评论 7,997 次浏览

1 当前国内银行实际支持情况
网银兼容性统计表140325:http://www.zeuux.com/group/openbanks/bbs/content/57234/
时间为14年3月25号:

说明:
1.工商银行网银对Chrome等浏览器只支持指定的版本;
2.中国银行虽然官方表示USBkey支持Mac下使用,但有网友测试存在故障;
3.有网友反映农业银行网银可以在IE x64下使用,但仅限于证书登录查询,不能交易(原因是没有64位的交易密码输入控件),所以新表仍然标记为“N”;
4.关于140324浦发银行系统升级的问题,我认为这既是进步也是退步:退步在于浦发不再认为Chrome等浏览器自带的密码输入框是安全的,所以也要求Windows下使用Chrome系NPAPI接口的浏览器使用密码安全控件,从而导致Mac、Linux下用户无法使用(我觉得此次升级以前,任何系统下的Chrome等能免控件使用浦发网银是浦发对于Chrome等的信任,而不是出于Mac和Linux用户的考虑);进步在于现在在Windows下,Chrome也可以使用USBkey了。
Lenky补充:缺漏的招商,根据官网的提示是大众版支持windows和mac:

2 为什么会这样?
不认Firefox、Chrome 国内银行网银仍仅支持IE
http://www.kejixun.com/article/201305/9054.html
不认Firefox、Chrome,银行网银为何只爱IE?
http://www.it-times.com.cn/xinshenghuo/10942.jhtml
为什么有不少银行的网银不支持非 IE 浏览器?
http://www.zhihu.com/question/19896985
多数国内银行网银仍只认IE浏览器 被习惯绑架 (1)
http://miit.ccidnet.com/art/32559/20130527/4955415_1.html

直接原因:
网上银行的密码输入框一般采用了ActiveX控件

间接原因:
惯性使然:中国网银研发始于2000年初,而那时刚好是浏览器世界最黑暗的日子,没有竞争与进步,Windows IE一家独大。所以中国网银初起就没考虑支持其他浏览器,后面也就跟着没有怎么考虑其他浏览器。
投入产出比的问题:农行浙江省分行电子银行部张丽说,银行在网银开发过程中要进行大量测试,以保证网银安全。每一次IE更新,网银都会打补丁,而Chrome和Firefox的更新频率高于IE,市场份额则不及IE,银行一般会优先考虑用户多的浏览器。

网友给的回答:http://www.zhihu.com/question/19896985

3 现有解决方案
国外的情况:美国银行、花旗银行、摩根大通银行、美国第一资本投资国际集团、汇丰银行等都提供标准化跨平台的支持,德国银行还提供标准网关接口, 许可用户自行开发网银程序等。
国内的发展:支护宝,建设银行、浦发银行等已经全面或开始逐步支持火狐浏览器。
目前各大银行正在研究“下一代网银系统”,它将基于HTML5技术实现跨平台操作,打破浏览器之间的技术差异所带来的影响。
网友绝招:Firefox中,官方最近新推的“firefox网银支付助手”插件就能解决问题,另外还有“解雇IE”、“IE Tab”等一些网友自制插件。而在Chrome中,“ActiveX for Chrome”是网友提供的解决方案之一。

3.1 网友的各种方案分析:
1) 较完整的支持ie引擎:
http://www.ietab.net/
http://en.wikipedia.org/wiki/IE_Tab

2) 仅支持ActiveX插件:
火狐:https://code.google.com/p/ff-activex-host/
https://github.com/leeor/ff-activex-host

This Firefox plugin makes it possible to use (host) ActiveX controls in Firefox. It is based on the Gecko NPAPI and provides full access to the hosted control (events, functions, properties).
Security-wise, the plugin checks whether the control is safe for scripting and that it has not been marked as unsafe by IE (kill bits).

谷歌:http://www.chromi.org/archives/10618
https://code.google.com/p/np-activex/ ff-activex-host克隆版
This project enable ActiveX plug-ins for NPAPI browsers. Especially, for Chrome, some automatic inject scripts are provided to load ActiveX plug-in on webpages without any manual operations for trusted sites.

缺点:只能是Windows

4 如何打破技术格局?
4.1 安全功能需求
安全控件的一般功能需求:

1, 安全输入框:帐户和密码,替代原生的HTML输入框

2,重定义了(文本/密码)输入框的“getValue()”函数,通过javascript获得的值是加密的。这样在SSL加密的基础上,又做了自定义的加密,完全做到了端到端的保密通讯。

3,读取DKEY(U盾)硬件信息以及证书等信息,软硬结合验证。

4.2 现有插件技术介绍
1) ActiveX
Internet Explorer 5.5 Service Pack 2 (SP2),Internet Explorer 6以及以后版本所支持的组件技术。

注:Win8以及后续版本里的现代风格IE禁用了几乎所有的ActiveX控件。
http://www.firebreath.org/display/documentation/Browser+Plugins+in+a+post-NPAPI+world

2) NPAPI
NPAPI(Netscape Plugin Application Programming Interface,网景插件应用程序接口)是用于在浏览器中执行外部应用程序的通用接口,与微软的ActiveX是竞争技术。
NPAPI插件开发学习:插件中多个dll文件的打包:
http://blog.csdn.net/zssureqh/article/details/9396435
支持NPAPI的浏览器:
Epiphany
Google Chrome
Konqueror
Safari
Mozilla系列,如
Camino
Mozilla Firefox
Mozilla Application Suite
SeaMonkey
网景导航者与網景通訊家
Opera
Internet Explorer 2.1至5.5版本

最新动态:http://www.cnbeta.com/articles/253889.htm
http://www.guao.hk/posts/chrome-to-gradually-drop-support-for-npapi-plug-ins.html

在2014年9月,所有现有的、基于NPAPI的应用和扩展,都将”说再见”(unpublished permanently)——尽管已安装的扩展还能继续使用,直到Chrome移除了对NPAPI的支持。2014年底则完全移除对NPAPI的支持。

看了一下官方的最新说明:
http://blog.chromium.org/2013/09/saying-goodbye-to-our-old-friend-npapi.html
Linux下的Chrome 35已经移除掉NPAPI了。

4.3 可能的解决方案
1,采用NPAPI方案:
招行目前是用得这种方案来支持Windows/Mac下的Firefox/Chrome:
在Windows下是向系统注册了一个NPCMBEdit.dll,在Mac下,。。。(没找到苹果电脑查看,坑。)

支付宝从08年开始就采用了这种方案来支持Linux下的Firefox以及其他支持NPAPI插件框架的浏览器:http://blog.alipay.com/301.html

下载支付宝插件包aliedit.tar.gz,经过抽取,解压后会得到libaliedit32.so和libaliedit64.so动态链接库,使用objdump -d libaliedit64.so > libaliedit64.S反汇编,查看汇编代码里包含有NP_Initialize、NP_GetPluginVersion这样的字样,所以可以确认采用的是这种NPAPI方案。

改了一个测试代码,代码在github上:https://github.com/lenky0401/npapi-sdk.git
Ubuntu Kylin 14.04 LTS下的测试效果:

优点:可行性经过实践验证,技术成熟。
缺点:NPAPI正逐渐被Chrome和Firefox弃用。

2,Chrome采用PPAPI /NaCl方案:
https://code.google.com/p/ppapi/
https://developers.google.com/native-client/
http://en.wikipedia.org/wiki/NPAPI#PPAPI
http://en.wikipedia.org/wiki/PPAPI#Pepper
https://developer.chrome.com/extensions/messaging#native-messaging

2009年8月,谷歌引入了一个新的项目PPAPI。PPAPI对NPAPI进行了一系列的修改以增强浏览器插件的可移植性和安全性。
就Chrome而言,PPAPI是它替代NPAPI开发插件的新方案,但Firefox目前未有计划支持它(https://wiki.mozilla.org/NPAPI:Pepper)。
2012年2月,Adobe申明GNU/Linux版的Flash Player只提供PPAPI版。
chromium源码里有对应的examples来完成这样的安全控件需求,测试了一下,2D绘图显示有问题,导致显示不了,原因不明。

优点:Chrome跨平台支持windows,Linux,Mac甚至其它移动设备。另外有PPAPI的Flash Playe插件实践案例,可行性上应该可行。
缺点:目前暂不被Firefox支持。

3,Firefox: Mozilla Extensions js-ctypes:
(貌似没法满足安全输入法控件的要求,因为没法绘图?)
https://developer.mozilla.org/en-US/docs/Mozilla/js-ctypes

转载请保留地址:http://www.lenky.info/archives/2014/08/2422http://lenky.info/?p=2422


备注:如无特殊说明,文章内容均出自Lenky个人的真实理解而并非存心妄自揣测来故意愚人耳目。由于个人水平有限,虽力求内容正确无误,但仍然难免出错,请勿见怪,如果可以则请留言告之,并欢迎来讨论。另外值得说明的是,Lenky的部分文章以及部分内容参考借鉴了网络上各位网友的热心分享,特别是一些带有完全参考的文章,其后附带的链接内容也许更直接、更丰富,而我只是做了一下归纳&转述,在此也一并表示感谢。关于本站的所有技术文章,欢迎转载,但请遵从CC创作共享协议,而一些私人性质较强的心情随笔,建议不要转载。

法律:根据最新颁布的《信息网络传播权保护条例》,如果您认为本文章的任何内容侵犯了您的权利,请以Email或书面等方式告知,本站将及时删除相关内容或链接。

  1. Virgo
    2014年8月7日10:34 | #1

    技术帝 哦我们做朋友吧~!!!!!!
    想学习ubuntu,可以的话 可以加我qq,或者给我发邮件,谢谢~!

    • lenky
      2014年8月8日10:31 | #2

      谢赞,其实,我就是一个打酱油的~

  1. 本文目前尚无任何 trackbacks 和 pingbacks.