网络开发之编程技巧之一(有效验证用户的登录)

2016-01-29 17:55 7 1 收藏

网络开发之编程技巧之一(有效验证用户的登录),网络开发之编程技巧之一(有效验证用户的登录)

【 tulaoshi.com - ASP 】

    在做网络关键事务的应用开发中,特别是有关有特定面向性的应用开发时,我们需要考虑的问题要比单机编程多得多.
这些因扰主要是来自于几方面:
  首先,是所有基于WEB的应用都是建立在开放系统上的,客户端几乎总能看得见你或多或少的程序源码痕迹,虽然这对网络开发的快速壮大发展起到了良好的作用,但对于许多习惯于使用传统环境编程的程序员来说,可以说是一场恶梦,我们再也不能使用传统惯用的明码内嵌方式的验证了,因为我们所有需要的验证材料,几乎都能从客户端源码中分析出来,因而,在客户端使用明码验证思路, 在基于WEB的网络开发中,显然是行不通的。

  第二,来自浏览器的干扰,基于WEB的编程,不管你使用的是什么方式,你总得通过浏览器作为你最终的实现终端,这是一条谁也不能改变的客观现实,这样, 浏览器上许多原本是为方便用户浏览而设的功能, 会成为我们WEB程序的致命杀手, 举个简单的例子,你写个很完美的身份验证页面, 并且这个验证页面的确也起到了效用,对客户请求做了全面的验证,但是, 当你的程序引导用户进入实质性事务处理页面时, 用户为了方便使用了浏览器的收藏功能,很不幸, 你若在事务处理页面不做任何验证的话, 你在验证页的所作的所有守护功能上的努力都成了泡影,一切形同虚设,客户下次进入时, 只需要点收藏页就能进入事务处理了,若点收藏页的不是您可爱的客户们, 而是那些活跃网际的天才HACKER们,你难道不觉得你的作品很失败吗?就我而言,我觉得这是一种对程序员的致命嘲讽,太可悲了!!!

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/asp/)

  另外, 我们还有一些来自于网络上操作系统漏洞的困扰,当然, 这些因素通常的影响不大,并且, 我们也几乎对此无能为力,这方面的解决方案,我们只能求助于那些生产操作系统的大厂商,我们所能做的是,只能尽力防范来自程序本体的BUG。
说了这么多, 其实归根也只是一点内容, 那就是,基于WEB的开发让我们走进了一个全新的程序世界, 这个世界到处充斥着危险与自由,我们该如何去面对呢?这一次我们先想个办法把用户验证做到实处吧,在用户验证中, 最常用的就是IP验证,但是, 我个人不提倡使用直接的IP验证, 那样太危险了,只要稍有软件知识就很容易找出程序是否使用了直接IP验证及网络中其它用户的IP值,这样, IP验证就会形同虚设,我想到的是IP的变码验证方法, 姑且让我这么叫吧,其实实现的思路并不复杂, 但却是一种比较有效的验证方法,具体如下:我们把IP与登录时间这个时刻变化的密钥结合起来,只需要通过一些简单的可还原代数运算,就能生成一个不断动态变化的密码了,然后呢,我们再把生成密钥的时间与密码一起通过页面不断传输到下一处理流程,在每个处理流程工作前都使用传输过来的时间及请求服务的IP对密码进校验,相异则退出,这样,我们的处理流程就会使用一个每次进入都不同的密钥进行验证,这样的好处就是,加密的密钥是一个精确到秒的动态数,很少有人能在有限时间内猜中这个密钥,这样,即使HACKER天才们知道了你的加密算法, 他们也只能干对着屏幕光火, 因为,他们无法准确命中其他用户的登录时间,嘻嘻, 这一招黑吧!就让HACKER去发挥聪明才智吧!哈哈,这样, 作为网络上正方的程序员们,开心笑一个吧,作为网络反方的HACKER们永远也不可能在抢答时间到之前找到答案的 !!!这样就大大减少了我们被HACKER们玩弄的机率!当然也就同时消除了大部分让我们被用户责难安全性问题的尴尬境地,至少会让我们晚上睡得更安心!OK!JACK今晚还有很多事要做, 就先写到这了!文章内容权当满足一下JACK那颗不断膨胀的虚荣心吧!亲爱的朋友们,BYE! 

来源:http://www.tulaoshi.com/n/20160129/1503523.html

延伸阅读
标签: Web开发
静态的登录界面的设计login.htm,代码如下: html head     title系统登录/title     style type="text/css"... !-- .style1 {...}{     font-size: 18px;     font-weight: bold; } .style2 {...}{font-size: 24px} .style5 {...
TextView就是一个用来显示文本标签的控件。 代码如下: /*TextView的设置*//* 获得TextView对象 */       textview = (TextView)this.findViewById(R.id.textview);       String string = "TextView示例!";     /* 设置文本的颜色 */   te...
标签: Web开发
不少JSP初学者在学会简单的jsp编程后,往往停留在用jsp里面的sql语句调一个javabean进行数据库连接阶段,止步不前了。 这个简单的教程希望能够有助于初学者学会用oop思想进行jsp编程。 场景:一个简单的新闻系统,有2-3个数据表构成。数据库系统用的是Mysql,当然用其它的也类似。先看第一个数据表,也是主要的数据表:news create table ne...
正在看的ORACLE教程是:PL/SQL编程经验小结开发者网络Oracle。平时在PL/SQL中的编程中遇到一些问题,这里以问答的形式来进行把它们总结下来,以供大家分享。 1、当需要向表中装载大量的数据流或者需要处理大量的数据流的时候,能否使用管道提高处理效率? 管道函数对于改善并行查询的性能非常方便,它加快往表中加载数据的速度。管道函数...
VisualBasic6.0(以下简称VB6)以其强大的功能为广大软件开发人员所喜爱,被用来开发各种应用程序。随着Internet的迅猛发展,VB6在网络方面的应用开发也越来越多。本文介绍笔者在实际编程开发中总结的5个技巧,希望能为进行网络开发的朋友们提供一点参考。 连通检测 许多应用程序常常需要在程序中直接进行联网操作,以便进行一些必要的...

经验教程

686

收藏

44
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部