授权管理器(AzMan)中授权策略信息的存储方式的选择

授权管理器(AzMan)是 Windows Server (2000、2003、Longhorn Server…)中自带的、能够和AD紧密集成的、供应用程序使用的授权检查引擎,它实现了完整的基于角色的授权管理框架,利用它,可以在应用程序中大大简化与授权有关的代码编写与实现。

在目前版本中,授权策略信息有两种存储方式:

  • XML
  • 目录(如活动目录-AD或ADAM)

上述两类三种存储方式的适用场景分别如下:

  • 简单的小型应用可以直接使用XML,在这种方式中,不用设置/扩展 AD/ADAM 的 Schema,非常方便
  • 如果基础域环境不好(如应用程序不便访问DC、存在多个Domain)等情况时,可以使用 ADAM
  • 如果基础域环境较好,且应用程序的身份完全与AD集成,最好使用AD

在 Vista 中,AzMan 又增加了一种存储方式:SQL Server,这样对于应用程序来说,又多了一种更实用的选择,而且即然能存在 SQL Server中,估计通过一些手段,这些信息也能存储到其他类型的数据库中,如Access、Oracle等,现在 ASP.NET 2.0中的一些 Provider 不也是公开源代码了,并且实现了其他数据库类型的 Provider 了嘛。

不过,AD/ADAM 具有复制功能,可以方便地实现多个实例之间的目录同步,而SQL Server 不具有此功能,另外 AD/ADAM 在查询方面具有性能优势(AzMan的绝大多数请求是查询),所以到底要使用哪一种存储方式,还是要综合评估。

关于 AzMan 的更多信息,可以参考 AzMan MSDN Blog

Sidebar Gadget开发教程(1)

翻译了两篇Sidebar Gadget的文章后,决定自己写一个教程,与准备投身于Sidebar Gadget开发的劳苦大众们分享一下经验。也当作自己个人学习Gadget开发的一些总结,使自己可以学习得深入一些。欢迎大家就这一系列文章提出批评斧正。本部分准备介绍一些基础知识。

关于SideBar

SideBar是Windows Vista特有的一个显示子系统(曾经宣布为Windows XP以及Windows Server 2003也开发Sidebar,但该项目现已取消),在中文系统中称之为“边栏”。其执行程序,我们可以在以下目录中找到[SystemInstalledDriver:]\program files\Windows Sidebar,此文件夹 结构大体如右图所示,各文件夹以及文件的具体作用如下:

  • Sidebar.exe:此文件即Sidebar.exe的主执行文件,如果你在Windows Vista当中未打开边栏,可以直接执行该文件即打开。
  • Sbdrop.dll:Sidebar拖抻支持文件;
  • settings.ini: Sidebar设置文件,可以设置默认启动Gadget等特性。
  • wlstrvc.dll: Weather Gadget(即显示天气的小工具)所依赖的ActiveXControl,显示RSS信息的Gadget所依赖的ActiveX控件是置身在System32目录下msfeeds.dll文件;
  • en-us: 英文相关的资源文件;
  • zh-CN:简体中文相关的资源文件;
  • Gadgets文件夹:该文件夹中包括多个子文件夹,每个子文件夹均是Windows Vista默认自带的Gadgets解压后的形式。
  • Shared Gadget:存储在此文件夹中的Gadget可以供同一机器上的多用户共同使用。

而用户自行安装的Gadget可以在[SystemInstalledDriver:]\users\[user name]\appdata\local\microsoft\windows sidebar\gadgets\中查找到。

关于Gadget

在中文系统中,Gadget被翻译为“小工具”,微软的Gadget基本上分为三种,即Live Gadget、Sidebar Gadget以及Slideshow Gadget:

  • Live Gadget:如果大家访问http://www.live.com,会发现其页面可以进行自定义,而自定义的小型页面模块,我们称之为Live Gadget;
  • Slideshow Gadget:Windows Vista支持未来的笔记本电脑除了主显示屏外,还可以有一个外置的小型显示屏,类似于双屏手机中外置显示屏,在不开电脑电源的情况下,从这个扩展显示屏上获取自己想要的信息,而实现这个功能的模块称之为Slideshow Gadget;
  • Sidebar Gadget:本教程中所指的Gadget是此种,依赖于Windows Sidebar所执行的Gadget。

另外,这三种Gadget目前的开发环境、执行环境以及开发方式均不统一,不能统用。至于未来规划,开心也不是非常清楚。有知道的可以在此透露一下。

其实Gadget本身非常简单,如果感兴趣,可以访问http://go.microsoft.com/fwlink/?LinkId=55696,并且随意下载一个SideBar Gadget。把其另存在桌面上,比如那个计算器Gadget(Calculator)。其后缀名为.gadget。我们现在把后缀名改为.zip,在Windows XP系统上可以双击打开,就会看到其目录结构。

也就是说,Gadget本身是包含一堆HTML、JavaScript、CSS以及图片文件一个压缩包,其压缩格式可以采用ZIP格式,也可以采用CAB格式。采用CAB格式,可以进行数字签名,参阅我上一篇译文。在这个Gadget中使用Gadget.xml这个文件来描述此Gadget的通用信息,如名称、作者、版本、是否有设置文件、图标等等。此文件可以放置在根目录中,也可以放置在不同语言文件夹中,如en-us或者zh-cn当中。

系统自带的Gadget大部分都使用了一些特别开发的ActiveX控件。我们自己开发的Gadget如果是想使用Microsoft Gadget Gallery(即http://go.microsoft.com/fwlink/?LinkId=55696)方式或者后缀名为.gadget方式分发,那么只能调用系统中已有的ActiveX控件,而不能创建自己的ActiveX控件。如果你想自己制作可执行的安装文件包,那么你就可以为所欲为了(流氓软件???呵呵)。

Javascript可以调用的ActiveX控件也非常多,比如使用Scripting.FileSystemObject访问文件系统,使用Microsoft.XmlDom分析XML文件,使用Microsoft.XMLHTTP调用Web Service等。所以Gadget可以做很多事情。

那么可以做什么事情呢?这就得依赖于我们的头脑不断闪现的灵感火花了。

问答题:博客堂,你认为哪部分可以提供Gadget服务呢?:)

译文:Sidebar安全性探讨

译自:http://blogs.msdn.com/sidebar/archive/2006/08/31/733880.aspx

作者:Brian Teutsch,Windows Sidebar PM(译文中含个人演绎)

Windows Sidebar作为Widnows Vista中的一个组件,提供了对于“Gadget(小工具)”的运行时支持。Gadget是一种迷你程序,用以向用户呈现信息,提供辅助功能。Sidebar运行Gadget的方式类似于Windows Vista运行可执行代码的方式。Sidebar团队致力于使Windows Vista成为史上更加安全的Windows版本,我们也承认为Gadget提供安全并且可信赖的执行环境。

Sidebar Gadget开发方式

在Windows Vista中提供的Sidebar版本中,我们使用Microsoft HTML引擎来开发Gadget,这包括HTML标签、脚本、图片以及其它相关的特性。Sidebar也提供了丰富的APIs集,使得Gadget中的脚本可以调用Windows中已经安装的ActiveX对象。

Gadget下载

Gadget是使用HTML以及脚本开发完成的,但是这个HTML并非在远程Web服务器上执行。首先,我们需要将Sidebar Gadget从服务器上下载,然后在本地机器上执行。这种过程比较类似于从服务器端下载可执行文件(.exe),然后执行的过程。

Gadget文件本身是一种压缩格式,可以采用的压缩机制包括ZIP方式或者CAB方式。如果使用CAB方式打包,我们为其添加证书,进行数字签名。数字签名工具可以使用Visual Studio 2005中的“Signtool.exe”命令。

只有当用户查看过Gadget提供的相关信息后,Sidebar才开始载入MSHTML控件进行呈现,并且执行脚本代码。

:以下图片来自于预发行版本的Windows Vista,在未来有可能会有所不同:

图1:带有代码签名的安装对话框

图2:不带有代码签名的安装对话框

由于代码签名需要耗费一定的时间,而且并不普遍,我们并没有强制要求所有的Gadget都必须签名后才可以部署。

HTML 运行时

HTML Gadgets将会遵照Internet Explorer以及域沙盒(Domain sandboxing)的安全设置来执行。不过,因为Gadget类似于其它可执行文件,拥有相似的下载过程以及安装体验。所以HTML运行时给予了Gadget相当的权限来执行,类似于HTML Application(HTA)运行时权限以及本地机器区域的安全配置。

Gadget在其安全配置上,与普通的Web网页有很多不同点。第一点,Gadget可以创建任何已安装的ActiveX对象的实例,因为其被配置为“可以初始化并且脚本访问未被标记为安全的ActiveX”。其次,Gadget也可以访问跨域的数据源,因为只有将不同位置的数据进行相应的集成,Gadget对于开发人员和最终用户才有意义。最后一点特殊的是,在SideBar的HTML页面中禁止下载任何新的ActiveX控件,无论这个ActiveX控件是签名或者未签名的。

User Account Control (UAC) 交互

User Account Control (UAC) 是Windows Vista提供的一个新特性,使用户能够以标准用户权限来运行Windows。如果当前Windows用户是标准用户,那么Sidebar Gadgets也会为标准用户权限来执行,从而避免Gadget做出破坏系统的行为。在UAC审批模式下,即使当前用户是Administrators组中的成员,默认情况下,Gadgets也会为标准用户权限来执行。这样做可以有效阻止Gadget修改系统中受保护的资源。

另外一个我们需要知道的是,虽然其它可执行软件在需要较高权限运行时,会弹出相应的对话框,来要求用户给予完全的Administrator权限。但Sidebar Gadget在此种情况下,不会显示此对话框。不过,通过Gadget来调用的应用程序仍然会显示此对话框,以获得更高权限。

举个例子,如果Gadget试图删掉System32系统目录中的一个文件,虽然此操作会失败,但不会给予最终用户任何提示。失败的原因是由于系统文件无法被标准用户修改。

分级模式交互

IE中的分级模式也会影响SideBar Gadget的执行。IE 7的分级模式可以由父母或者其它监护人模式设置安全浏览以及所执行的一系列策略,比如禁止儿童访问一些成人或者其它非法站点。举例来说,如果分级模式仅允许儿童访问站点A或者B,而Gadget试图与站点C进行通讯,那么将会失败。

Windows Defender 交互

由于Windows Vista中的Windows Defender中的存在,Gadget的下载会更加安全。如果允许,Windows Defender可以在IE下载Gadget时,会自动扫描Gadget包中是否存在恶意代码。这种操作可以有效的保护用户,因为它是在Gadget运行前,甚至安装前就已经进行了。

Internet Explorer 7 保护模式

在Windows Vista中的Internet Explorer 7有一个新的安全特性,即保护模式。保护模式可以有效的阻止不被信任的站点中的恶意软件的侵扰。但保护模式对于Gadget无效,因为Gadget是运行在本地计算机上,并且与本地文件以及API相互交互。

完全信任

Gadget是迷你型的应用程序。虽然每一个单独的Gadget只有单一需求,比如读取文件或者远程机器上的信息,或者仅仅是显示一个按钮,或者其它功能等等。但是各个单独的需求汇集起来,就成为一个巨大的集合。为了更好的集成,所以我们给每一个单独的Gadget都设置为了完全信任模式,即第一次通过Windows Sidebar添加新Gadget对话框,并且信任后,以后执行时不再提示任何对话框。

附加的安全信息

如果您的客户在一个受组策略控制的环境下使用Gadget,可以限制Gadget的使用,以避免以上所提及的境况。Sidebar支持一种称之为共享Gadget文件夹的模式,这个文件夹可以在Program Files文件夹中找到。你可以将Gadget存放在此文件夹下,从而让本机上所有用户均可使用一份代码。你可以设置一个策略阻止用户再安装新的Gadget到他们自己的独享文件夹中。这个策略选项也可以阻止使用任何非共享Gadgets文件夹下的Gadget,而且只能通过某Administrator来更改此项策略。

Windows Sidebar共有以下的组策略选项以供定制:

  • 关闭Windows Sidebar
  • 禁止解压缩或者安装未签名的Gadget
  • 关闭用户安装的Windows Sidebar Gadgets
  • 覆盖“获取更多在线上小工具”链接

一只耳的病中感言

一年前的某天,右耳垂后面长了一个小疙瘩,一直不以为意。今年开始逐渐变大,到七月份去医院查看时已经将近两分分左右,由于当时业务繁忙并且懒得去医院,所以拖到现在将近三公分时才去医院动了手术。

相信很多朋友都去过医院,也有过很多怨言。的确是这样,先去挂号,告知对方姓名、性别、婚否等相关信息,去门诊再问一次,然后交费化验再来一次,然后再去办医保又是一次,办理住院以及医保信息还要问一次。真是“没有病也被累出病来”。做心电图时,医生说我的诊单不合格,应该填写“多导式心电图”,而非“心电图诊断”,我又得跑回医生处重新修改这个错误。

是医院没有上马IT系统吗?不是。其实我所住的这家医院也上马了相关的系统,并且还有条形码扫描仪等等先进设备,门诊信息以及住院信息都是非常齐备的。但是IT系统只是工具,而非万能药。缺少了完善的业务流程以及人员培训,IT系统只是摆设。

由此想起某年在某省级电信公司开发BOSS系统时的遭遇。拿到需求,已经将近千页的文档。但很简单的几个业务问题,比如办理小灵通的流程等等这种最基础的问题,每级领导给出的答案仍然不一样。很多大型公司在进行IT系统建设时,首先需要请咨询公司进行业务流程整理,从而保证IT系统的有效性。但很可惜,就像各单位在IT采购时比较重硬件轻软件一样,在上马IT系统时,也大都是重系统轻咨询。所以导致IT系统上马时不仅没有助力业务,反而有时候扯后腿。

另外一个感言就是,现在医院真的非常好赚钱。就一个耳垂的肿瘤,我先后拍了心电图、胸透,还要抽四管血化验。手术前先输液,手术后再输液(今天一上午就输了三瓶)。在你询问时,医生的回答感觉也是非常有道理的:第一,住院有一个基础费用,先把基础费用花到了才能动手术;第二,在手术前,要确认身体没有其它疾病,否则术后出现问题由谁承担?开心也不是医生,只好认命。

本来手术定的是周四,但或者是天意吧,昨夜睡眠时,这个小疙瘩竟然自己破了,流出一些液体来,体积也小了一半。到了医院,大夫在没有麻醉的情况下,用刀挑开,然后进行了简单的包扎(颇有刮骨疗毒的感觉)。这下手术也不用做了,明天下午又要开始继续上班了,不过这形象可能就要影响市容了。

ASP.NET 中处理页面“回退”的方法

我们在编写基于 ASP.NET 的应用程序时,如果代码执行出错或检测到异常,一般会提示用户“返回”或“回退”,或者在多步操作、列表/详细的查看界面中,也会给用户提供回退到上一页面的链接,对于这种情况,大家很快就会想到的简单做法就是利用 Javascript 来实现,即 history.go(-1) ,但是由于 ASP.NET 页面的 PostBack 机制,所以 history.go(-1) 可能还是当前页面,而不能真正回退到上一页面。

在 Classifieds Site Starter Kit 中,学习到一种不错的关于回退的处理方法,可以分别在客户端和服务器控件中实现页面的回退,代码如下:

1)首先在页面中增加两个属性

//记录上一个页面的信息
private string UrlReferrer ...{ get ...{ return ViewState["UrlReferrer"] as string; } set ...{ ViewState["UrlReferrer"] = value; } } //记录 PostBack 的次数 public int NumPostBacks ...{ get ...{ if (ViewState["NumPostBacks"] != null) return (int)ViewState["NumPostBacks"]; else ...{ ViewState["NumPostBacks"] = 0; return 0; } } set ...{ ViewState["NumPostBacks"] = value; } }
 

2)在 Page_Load 事件记录上一页面地址、更新 Postback 次数、设置回退链接的地址

// 记录上一页面的信息或更新 PostBack 的次数 protected void Page_Load(object sender, EventArgs e) ...{ if (!Page.IsPostBack) ...{ if (Request.UrlReferrer != null) this.UrlReferrer = Request.UrlReferrer.ToString(); } else NumPostBacks++; int goBackSteps = NumPostBacks + 1; BackLink.NavigateUrl = String.Format("javascript:history.go(-{0});", goBackSteps); }

 

3)直接在代码中处理回退操作(如 Back_Click),可以直接调用如下方法

//在代码中回退 protected void ReturnToPreviousPage() ...{ string referrer = UrlReferrer; if (referrer != null) Response.Redirect(referrer); else Response.Redirect("~/default.aspx", true); }

利用 AOP 实现 .NET 上完整的基于角色的访问控制(RBAC)模型

近期帮别人在 ASP.NET 中实现简捷的安全/权限控制,于是进行了相关研究与内容搜集,并整理成代码,已在实际的项目中运用,效果突出,比 .NET 中的代码访问安全性(CAS)和 ASP.NET 中的相关安全控制机制更为灵活。

于是把其中实现的内容和主要代码共享出来,但内容较多,放在在随笔里会干扰大家查看首页的视线,所以归到文章里,感兴趣者可以在这里http://blog.joycode.com/moslem/articles/85194.aspx)查看。

本文及其中的代码主要介绍了以下内容:

  • 如何在 C# 中简捷/方便地进行 AOP 编程
  • 如何利用 AOP 来透明地在业务逻辑对象中进行权限检查
  • 如何实现完整的基于角色的访问控制模型
  • 如何在UI上针对不同的用户权限对控件进行设置(如禁止或隐藏)
  • 如何设置 Attribute,如何利用反射获取程序集中所有的、指定类型的 Attribute 定义
  • 其他相关内容

网上银行安全事件的反思

今年以来,网上银行安全事件层出不群,闹得沸沸扬扬,据网易财经:网银危机(http://finance.163.com/special/002521GA/ebank.html)上公布的信息,受害者近千人,损失资金金额也近千万元。

如果你在银行的科技部门,就知道这些事件带来的波动效应有多大,几乎所有银行的网上银行都极大的关注这些案件,从上至下,进行安全自查,封闭可能漏洞,关闭风险等级较高的功能,以最大限度地提高系统的安全性,降低客户的资金风险,当然,我也被折腾的够呛。可以说,工行此次事件不但给工行的声誉和上市进程造成了严重影响,而且几乎给所有其它银行的电子银行业务都带来很大的冲击和负面影响,我身边的好多人在了解到这些情况后,有的直接关闭了网上银行的功能,有的则坚定了不相信网上银行系统安全、而且决不开通网上银行功能的想法。

就整个事件反思,个人认为:

1) 工行的对整个事件的态度确实存在问题

在网上银行出了安全事件后,不分青红皂白,一律推到受害人身上,按“工行网银受害者联盟”(www.ak.cn)网站上事件相关人的描述,工行把受害人“妖魔化为弱智群体,然后把我们一脚踢到公安机关;甚至工行还混淆其商业银行的企业身份,对我们肆意诬蔑和打压”。

可以说,工行的这种态度是很多大型国有企业(包括其他行业)的通病,丝毫不出人意外,大家在日常生活中碰到这样的店大欺店案例并不鲜见。在最新一期的《新金融》杂志上,仍看见工商银行电子银行部的主管领导在推脱责任,说问题全出在用户身上。

个人对此也深有感触,有一位同学在工行数据中心,我们在聊起此事时,他仍坚称:整个事件仍是“别有用心”的人在夸大其辞,即使其中真有受害人,那也是他自己太笨。个人以为目前在中国,没有人敢公开地对中国工商银行这样的大目标“别有用心”,所以我宁愿相信,www.ak.cn 上公布的受害人,不存在造假的可能。

态度决定一切,国家足球队原主主教练米卢这话说得没错,我相信,如果工行不是始终独善其身、推脱责任的态度,事件也不会闹到如此地步。

回过头来看看招行,能够在网站上开通论坛,专门收集网友的反馈,来不断地更改和升级系统,印证了其“因您而变”的企业口号,其他哪家银行能有些魄力开这样一个论坛? 当然了,以现在这种系统的水平,最好还是不要开,会被口水淹没的。

2) 工行的系统确实存在问题

据我个人估计,这次大面积暴发的网上银行安全事件的主要原因就是出在工商银行网上银行系统登录页面的安全控件上,工行最早的网上银行系统使用的是普通的 HTML 控件,而且也没有使用验证码,后来,在系统升级时,加入了图片验证码,也加入了安全控件,但这个所谓“安全控件”的安全性并不高,不但不能防止大部分键盘记录软件(KeyLogger)的截获,也没有对数据进行加密(详见于2004年我对此进行的分析:网上银行“安全登录控件”分析),再后来,他们再次对安全控件进行了升级,对数据进行了加密,也能够防止大部分 KeyLogger 的截获,但据了解内情的人员透露,仍然存在漏洞,工行也在考虑进行进一步的升级。

有人也许会说,工行的系统管不了用户机器上的木马,但是,系统安全是一个整体的概念(信息安全领域的“木桶理论”),光做到银行端的安全是没有用的,黑客不会找最安全的地方来进攻的,即然网上银行系统的页面扩展到了用户端,那么银行就有责任地保护这部分应用(最薄弱的部分)的安全。

3)工行的安全事件响应机制存在问题

按照中国人民银行和银监会(它们在此次事件中也有监管缺失的问题)有关要求,商业银行在开办网上银行时,一定要建立安全事件响应机制。但就此次事件来看,没看出来他们的响应机制在哪里,首先是没有积极地帮助受害人锁定帐户,其次是没有积极与公安机关配合,尽早对所有事件统一分析,统一处理,而只是在事件闹得沸沸扬扬的时候,才“正面回应”,结果仍是“工行回应网银资金失窃案 称系统不存在漏洞”(http://news.tom.com/2006-08-18/000N/78413992.html)。

按说对于网上银行这种安全性要求非常高的系统来说,系统务必要记录访问客户端的所有细节,不但应包括最重要的客户端 IP 地址,还应该包括 HTTP 请求(Request)中的所有变量,如远程主机名、User_Agent、HTTP_REFERER、Accept-Language/Encoding等数据,这些数据将对追踪访问人、电子取证、案例侦破提供提供非常有力的证据,很多系统会记录 IP 地址,但往往会忽视其它一些特征数据的记录,而通过对这些数据的分析,有助于对那些通过代理来进行犯罪的黑客进行证据搜集。据个人分析,这些重要数据很可能被工行的网上银行系统所忽视,以至于影响了有效的响应过程。

其次,以工行的这样的大型企业来说,在事件发生时,完全有能力直接与最高级别的公安机关对话,对整个事件统一立案,集中力量统一侦破,相信很快会有结果,但是据了解,工行直到最近才把这事做起来,但这里,大好的时机都错过了。

4)客户所承担的安全成本太高

这不仅是工行的问题,几乎其他所有银行的网上银行系统都存在此问题,个人以为,在 USB-Key(工行称之为 U 盾)上赚客户的钱,纯属利令智昏之举,有的银行甚至以此来做为利润科目,实在是一大耻辱,这就和CCTV以送台大熊猫起名的时机敛财、欺骗全国人民感情的恶举如出一辙(年初起的名,现在还没有送过去),自己图名利,别人来买单。

既然是你系统提供的安全认证手段,费用就应该你自己负责,如果 USB-Key 收费,那是不是设置帐户/卡的口令也要收费? 即使收费,收点成本成不? 现在 1G 的U盘才多少钱,你那个 USB-Key 要收近百元?

除此之外,包括工行在内的多家银行收取所谓的“网上银行年费”,说的不客气,纯属脑子进水,想不明白确定收费的这些决策人员到底有没有了解网上银行业务对于网点/柜台减负所带来的成本节约?

我相信,USB-Key 的代价较高是绝大多数用户没有选择它的原因所在,工行现在推动态口令卡,依我看没必要,把 USB-Key 取消/少量收费即可。

还有一些小细节:大家现在访问一下工行网上银行系统,在登录页面上,仍然没有一些醒目的安全提示,登录页面那么大,就容不下一段关于防止身份盗用的说明? 看看页面源码,很多数据检查/校验的机制仍光溜溜地用 JavaScript 显示在那里,在看看进入系统时的这个地址:http://www.icbc.com.cn/wangyin_xitong/alert.jsp(网银_系统),不能起一个好一点、专业一点的目录名吗?(此网站上诸多目录都是以中文拼音命名)

=========================================================

回顾这个尚未结束的事件,可以认为它是对工商银行在网上银行系统安全保护不够完善的一个教训,也是对其他银行的一个警示,未尝不是坏事,亡羊补牢未晚也。当然了,要说推脱,工行还是有些理由的,毕竟它的网银用户数量在国内是最大的,因此黑客会选择攻击它的用户(这和微软的软件最常被攻击的原因类似),但是,只要扎扎实实地、全面地、负责任地做好安全工作,不要老喊口号而未真正地付诸行动,相信前景还是美好的,网上银行业发展的大潮仍是浩浩荡荡不可挡。

个人以此事件为启发,就网上银行系统的安全性来说,提出一些以后需要关注的问题:

1)降低客户所承担的安全成本,如 USB-Key 费用的降低,大力推广数字证书的应用;

2)学习招商银行(这似乎让很多大银行很没有面子),发展基于浏览器的专用客户端,不但功能更为强大、操作更为快捷方便,而且能够有效避免假网站、木马型病毒的攻击。我们看看欧美地区,大多数的较大的银行都支持OFX(开放金融协议),通过 Microsoft Money 等专用客户端可以直接连接到它们的系统中,个人认为这也是国内网上银行系统的发展方向;

3)改变目前系统中这种通过用户+密码的传统认证方式,只要使用用户名/密码,就有可能受到键盘记录木马的威胁,要彻底的解决此问题,必须
使用全新的身份鉴别技术。例如在 .NET Framework 3.0 中新推出的 CardSpace 技术(内置在 Windows Vista 中,可以安装在 Windows XP 上),就可以彻底地避免键盘记录软件、通讯侦听软件对身份鉴别过程的威胁;

4)进一步加强应用的安全性,在事前、事中、事后各个环节提高可控性,例如:可疑交易的确认(类似于信用卡的可疑消费确认),用户可自行设置登录时段、登录位置(如只限于北京地区)、进行风险等级较高的操作时,能够及时发送短消息通知用户,能够快速定位交易对手(转出时的目标帐户)的相关信息,能够快速锁定可疑账户,能够更完全面的记录客户端的信息,能够进行行为分析;

5)继续有策略、有技巧、持之以恒地加强用户安全教育,这在目前中国的互联网界流氓软件满天飞、普通用户极端受害的情况下,是非常非常有必要的。

一组 ASP.NET 2.0 主题文件下载

在 ASP.NET 2.0 中,大多数控件都可以直接“自动套用格式”,以便设置一些内置的配色方案,能够方便地设计多姿多彩、色彩丰富的页面,除些之外,ASP.NET 2.0 还提供了网站和页面的主题(Theme)和Skin的功能,可以在网页或网站层次设定各种控件的显示风格,以便统一站点的外观。

在实际开发中,实际上大家可能不会过多地采用内置的“自动套用格式”的功能,而是自己来设定控件的色彩、字体等,当然也有可能是通过 Theme/Skin 来进行的,但是,以我的实践来看,实现机制是很好,但结果往往另人不满意,主要原因是缺乏色彩方面的感觉,往往会设计出来色彩冲突、不协调,甚至在很多情况下相当不好看的界面 …

即然有这么好的实现机制,肯定会有人实现/共享很好的 Theme/Skin ,Google 了一下,找到一组 Theme,看起来还是相当不错的,可以直接应用的项目开发中,当然了,这组 Theme 也有一些小瑕疵,即某些对比色的过于接近而比较模糊。

 Theme预览:http://www.dotnettreats.com/SampleThemes/Default.aspx
 Theme下载:http://www.dotnettreats.com/tools/Default.aspx