在做网络程序关键事务的应用开发中,特别是有关有特定面向性的应用开发时,我们需要考虑的问题要比单机编程多得多.
这些因扰主要是来自于几方面:
首先,是所有基于WEB的应用都是建立在开放系统上的,客户端几乎总能看得见你或多或少的程序源码痕迹,虽然这对网络程序开发的快速壮大发展起到了良好的作用,但对于许多习惯于使用传统环境编程的程序员来说,可以说是一场恶梦,我们再也不能使用传统惯用的明码内嵌方式的验证了,因为我们所有需要的验证材料,几乎都能从客户端源码中分析出来,因而,在客户端使用明码验证思路, 在基于WEB的网络程序开发中,显然是行不通的。
第二,来自浏览器的干扰,基于WEB的编程,不管你使用的是什么方式,你总得通过浏览器作为你最终的实现终端,这是一条谁也不能改变的客观现实,这样, 浏览器上许多原本是为方便用户浏览而设的功能, 会成为我们WEB程序的致命杀手, 举个简单的例子,你写个很完美的身份验证页面, 并且这个验证页面的确也起到了效用,对客户请求做了全面的验证,但是, 当你的程序引导用户进入实质性事务处理页面时, 用户为了方便使用了浏览器的收藏功能,很不幸, 你若在事务处理页面不做任何验证的话, 你在验证页的所作的所有守护功能上的努力都成了泡影,一切形同虚设,客户下次进入时, 只需要点收藏页就能进入事务处理了,若点收藏页的不是您可爱的客户们, 而是那些活跃网际的天才HACKER们,你难道不觉得你的作品很失败吗?就我而言,我觉得这是一种对程序员的致命嘲讽,太可悲了!!!
第三, 我们还有一些来自于网络程序上操作系统漏洞的困扰,当然, 这些因素通常的影响不大,并且, 我们也几乎对此无能为力,这方面的解决方案,我们只能求助于那些生产操作系统的大厂商,我们所能做的是,只能尽力防范来自程序本体的BUG。
说了这么多, 其实归根也只是一点内容, 那就是,基于WEB的开发让我们走进了一个全新的程序世界,这个世界到处充斥着危险与自由,我们该如何去面对呢?这一次我们先想个办法把用户验证做到实处吧,在用户验证中, 最常用的就是IP验证,但是,我个人不提倡使用直接的IP验证, 那样太危险了,只要稍有软件知识就很容易找出程序是否使用了直接IP验证及网络程序中其它用户的IP值,这样, IP验证就会形同虚设,我想到的是IP的变码验证方法, 姑且让我这么叫吧,其实实现的思路并不复杂,但却是一种比较有效的验证方法,具体如下:我们把IP与登录时间这个时刻变化的密钥结合起来,只需要通过一些简单的可还原代数运算,就能生成一个不断动态变化的密码了,然后呢,我们再把生成密钥的时间与密码一起通过页面不断传输到下一处理流程,在每个处理流程工作前都使用传输过来的时间及请求服务的IP对密码进校验,相异则退出,这样,我们的处理流程就会使用一个每次进入都不同的密钥进行验证,这样的好处就是,加密的密钥是一个精确到秒的动态数,很少有人能在有限时间内猜中这个密钥,这样,即使HACKER天才们知道了你的加密算法, 他们也只能干对着屏幕光火,因为,他们无法准确命中其他用户的登录时间,嘻嘻, 这一招黑吧!就让HACKER去发挥聪明才智吧!哈哈,这样,作为网络程序上正方的程序员们,开心笑一个吧,作为网络程序反方的HACKER们永远也不可能在抢答时间到之前找到答案的!!!这样就大大减少了我们被HACKER们玩弄的机率!当然也就同时消除了大部分让我们被用户责难安全性问题的尴尬境地,至少会让我们晚上睡得更安心!