自己构建的一个WEB安全验证机制

来源:互联网 发布:怎么画适合的眉毛知乎 编辑:程序博客网 时间:2024/04/29 20:10

声明:本CSDN博客中的所有文章均为本人原创 请勿转载

WEB应用程序的设计中,一般的用户凭据标识存储于SESSION中。但是,受应用程序稳定性,网络环境,和IIS系统的稳定性等复杂环境影响。常常发会发生SESSION突然无故丢失的现象。比如当用户登陆后正在进行一项填写麻烦的提交时,突然页面转到了登陆页。这种现象极大的防碍了用户的使用体验。因此,我设计了一种将某些标识信息存储于COOKIES客户端中的方法。(如果用户禁用COOKIES,也可存储于其它地方)。一旦SESSION验证失败。即可从客户端提取用户的凭据。而不需要用户重新登陆。

 

用户的用户名和密码等敏感信息不能以明文方式存储于客户端。因为伪造,盗窃,监听等安全威胁时刻不会松懈。因此,我设计了一种动态加密算法。这种算法,不会将用户名,密码存在客户端,但却存储一些能够标识用户的加密信息。以提交到服务器来恢复SEESION操作。更重要的是,这种加密在当前的技术情况下几乎无法被破解。

 

基本标识信息:

 首先,能够标识用户的基本信息的在本次设计中有以下三项:用户名。网卡(或IP),用户ID,加密时间。当然,你可以自定义你将要存储于客户端的验证信息。下面将说明,这种基本信息的选择原则及目地。

  唯一主机标识:(网卡,IP)用于在下次请求中验证是否是来自同一台主机。这将在一定程度阻挡COOKIES被盗窃,防止从另一台机器登陆。

  用户名:验证用户的合法性。根据这一信息,我们可以查询用户数据表以确定该用户名是否是有效的,这一措施在一定程度上加大了仿造难度。同时,验证成功后,根据用户名或用户ID将恢复SESSION,甚至密码。

 用户ID:和用户名的作用一样,但是,它是给伪造提供了一道更高的屏障。数据提交后,用户ID必须和存储的用户名一致。否则将验证失败。

 

另外,还有一种在服务器端的措施。那就是在服务器端生成的KEY文件中的过期时间。对一般用户,过期时间默认为1个小时,因此,一个小时后,这一凭据将失效。阻止了长期猜解。

 

动态加密原理:

事实上,当你使用下面的加密时,会感觉上面的措施是完全多余的,将用户名和密码直接通过下面加密存放在客户端都是安全的。因为下面采用一种“动态随机”加密,这种方式谁也无法确定其加密过程。对于想解密的人,根本就找不到解密的依据。“对称”和“非对称”两种加密两种选择,更增加了难度,因此这种方式的破解如果没有KEY文件,将几乎是一件不可能的事。分析它的难度,将不比步行出银河系更轻松。

加密原理概述:

  加密的目标您选择的信息。以我选择的为例:用户名,网卡,用户ID,时间。

首先将这些信息(可无序)放在几个队列中。

 

用户名(U

网卡(N

用户IDD

时间(T

队列1admin

队列2N1

队列336

队列4 2010-5-9

 

然后应用程序中有一处随机引擎。它会在你指定的范围产生一个随机项。假如此时,产生的项是对列2 从队列2中取出第一个字符,第一次是“N”。(生成KEY的程序会记录随机过程,它会记录如下内容:第一次,取N(表示网卡数据),下文KEY文件格式中有说明)

 接着,该引擎重复上面的工作,直到得到一个融合了上面基本信息的一个无序字符串。

admin N136 2010-5-9 经过该步之后可能变为:-ai13d6N010m5-29n

第二步,随机变换方式。首先这一部分将对上面的字符串逐一进行操作。这里将会确定对“N”如何变换。变换方式中有以下几种:

假设已经成的字符串为:43f$*dl10 N23wfJo。此时接下来的字符是N

1.                  翻转:用ASCI进行取反。得到的字符。

2.                  移位:用+-进行位置调动。格式为。原字符->移动位数。“->”和“<-”表示向左还向右。比如N<-4。那么表示向左移动4位。结果如:43f$*Ndl10 23wfJo .N->4 就是43f$*dl10 23wfNJo

3.                  代替:表示用某一值代替当前的值。格式为。原字符=目标字符。如N=3。那么结果为:43f$*dl10 323wfJo

  4      换位:就是与当前字符串中的某个随机字符进行调换位置:格式如:原字符~位置。如:N~+3,那么,结果为:43f$*d N10 l 23wfJo. 在程序中。以右1字符为结果。

第三步:如果变换方式为替换,那么将取出的字符进行替换操作。应用程序中定义了一个字符范围,如“a-Z 1-0还有一些特殊字符串“*,&,!,~[,’/,?<”等。这里随机引擎第二次从范围字符库中取出一个字符。假设随机取出了“。”号。那么,代替操作表达式就为:N=0

43f$*dl10 N23wfJo就会变为:43f$*dl1023wfJo

 

 

第四步:非对称加密。这一步将向生成的字符串中加入一些无意义的字符。以任意长度来增加破解难度。用随机数产生的字符随机插入加密字符中。但这一过程序必须控制好索引。

 

KEY 文档格式

编号

NS-USE-CA2359

过期日期:

2010-5-25

行号

部件代号

加密方式

转换表达式

 

 

1

N(网卡)

替代

N=*

 

 

2

IPIP

移位

 

 

 

3

UN(用户名)

移位

 

 

 

说明:行号表示了最小的加密单位:你可以对同一个字符如“N”进行多次加密。行号只会记录最小的加密单元。更重要的一点。行号用来验证KEY文件的完整性。是否记录程序或人为原因造成某个环节的记录丢失。

编号:这是第一个关键标识。一个WEB用户对应着一个KEY。存储在用户机器上的编号和服务器上KEY文件的编号一样时,才能确定是否为解密该用户的KEY

过期日期:这一值并没有存在于客户端。当某次请求需要解密时,首先用编号找到请求者的KEY文件,然后查看比较当前系统时间与过期时间。如果超过过期设置,那么当前KEY被作废。系统拒绝解密。

部件代号:用一个字符表示加密的字符属于那个部分。

转换表达式:(略)

                                                                                                      

解密过程相反。根据KEY文档反向操作即可。任何一步,那怕是最微小的差错都将造成解密失败。因此,该部分最严格的就是需要精确的KEY跟踪记录部分。

 

验证:当我们反向对当前用户请求的KEY编号文件进行解密后,得到了 用户名,IP,网卡,等信息。然后我们对存储于服务器上的信息进行对比。从而进行下一步的处理。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 干镀锌让环保查了怎么办 水管软管生锈了拧不动怎么办 镀锌管会生锈吗.怎么办 冷镀锌钢管生锈了怎么办 卖了过期的东西怎么办 喝到了假的饮料怎么办 烧汤总是溢锅怎么办 脚踩垃圾桶坏了怎么办 连衣裙特别容易起褶怎么办 施肥过度烧根了怎么办 农作物施用尿素发生肥害怎么办? 水稻尿素施多了怎么办 花施肥施多了怎么办 玉米被化肥烧了怎么办 撒施复合肥没有充分融化怎么办 绿箩化肥施多了怎么办 辣椒化肥施多了怎么办? 化肥施多了烧苗怎么办 绿植施肥施多了怎么办 盆栽肥料放多了怎么办 三环复合肥怎么办啊 母猪下崽后不吃食怎么办 猪自配料料槽不下怎么办 美甲边缘起翘怎么办 猪粪流到鱼塘里鱼死了怎么办啊 在基本农田建有机肥厂怎么办 有机肥厂的环评怎么办 织玻璃纤维网布环评怎么办 吃了受潮的奶粉怎么办 喝了受潮的奶粉怎么办 刚买的奶粉受潮怎么办 羊不小心吃了化肥怎么办 阿胶粉结成块了怎么办 半桶奶粉受潮了怎么办 眉粉受潮了结块怎么办 刚买的奶粉结块怎么办 袋装白糖成坨了怎么办 一袋子白糖硬了怎么办 粉饼上有一层油怎么办 葡萄后期氮肥施用过多怎么办 没洗的菜吃了怎么办