Cookies 欺骗漏洞的防范方法(vbs+js 实现)
关于ASP开发中Cookies欺骗与存储用户信息的(双语版)
叨扰一句,本人在此以文字形式呈现这篇文章,所用的机器并未配置ASP环境,因此提供的程序代码未经测试,对此带来的不便深表歉意。若您发现代码中存在任何问题,欢迎指正,本人皮厚不怕拍砖。
一、攻击原理:
Cookies欺骗主要利用了一些网络上的用户管理系统将用户登录信息储存在Cookies中的不安全做法进行攻击。相较于SQL注入等漏洞,这种攻击方式相对“困难”一些,但依然是非常“傻瓜式”的攻击。大部分基于Cookies的用户系统,会在Cookies中储存诸如username(用户名)和userlevel(用户等级)等变量。当浏览器访问ASP页面时,会传送类似GET /.../file.asp HTTP 1.0 ... Cookies: username=user&userlevel=1 ...的数据包。只要得知管理员的username和userlevel值(假设为admin和5),就可以通过发送GET /.../file.asp HTTP 1.0 ... Cookies: username=admin&userlevel=5 ...的数据包来获取管理员权限。在漏洞被发现之前,这种不安全的做法几乎被所有的用户管理系统所采用。
二、安全地储存用户信息:
鉴于Cookies的不安全性,我们需要寻找其他方式来储存用户登录信息。在ASP中,除了Cookies,我们还可以通过Session来储存信息。Session是储存在服务器上的,不易被客户端随意更改,因此具有较高的安全性。我们可以将所有的Cookies代码替换为Session代码,以此来提高系统的安全性。
三、长时间储存用户信息:
虽然使用Session可以避免Cookies欺骗的问题,但Session的存储并非长久之计(IIS默认的Session会在用户停止响应20分钟后失效)。为此,我们提出了Cookies与Session混合存储法。
当用户想要访问网站时,我们首先需要验证他们的身份。这一过程并非简单地从会话中获取用户名,而是需要一些更细致的操作。让我们一步步来看这段代码的实现。
代码开始执行时,首先尝试从会话中获取用户名。如果会话中没有用户的登录信息,程序将目光投向了Cookies。从Cookies中提取出的用户名和密码,需要注意防范SQL注入漏洞,这里我们将其过滤处理。如果用户没有提供任何登录信息,无论是通过会话还是Cookies,那么用户自然是没有登录的。
假设我们已经获取了用户的信息,接下来需要验证这些信息的有效性。我们会假设已经建立了一个名为“conn”的数据库连接和一个记录集对象“rs”。然后执行一条SQL查询语句,从数据库中检索与用户输入的用户名和密码相匹配的数据。如果用户信息合法(即存在于数据库中),则自动登录并将用户名存入会话中。否则,如果Cookies中的信息非法或不存在于数据库中,系统会采取相应的措施。
上述方法虽然看似方便,却存在安全隐患。因为浏览器每次都会将Cookies传输到服务器,如果包含密码的Cookies被他人获取,用户的账号就可能被盗。我们需要寻求一种更安全的解决方案。
于是,我们选择在用户信息数据库中增加一个名为“verifycode”的字段。在用户登录时,系统会随机生成一个长整型的校验值并存储在verifycode字段中。将用户名和此verifycode值而非密码存入Cookies中。在验证用户信息时,系统仅验证用户名和verifycode。这种方法的妙处在于,即使黑客获取了用户的Cookies,他也只能使用临时生成的verifycode登录,而无法获取用户的密码。每当用户再次使用用户名和密码登录时,此verifycode值都会改变,从而确保黑客无法继续使用旧的verifycode登录。这种机制的代码实现相对简单,只需在上述代码的基础上稍作调整即可。这种双重验证机制不仅增强了系统的安全性,也为用户提供了一层额外的保护。在我们精心设计的登录程序中,为了确保用户信息的安全存储与验证,我们特别加入了一段编程代码。这段代码旨在生成一个独特的验证码并将其存储在用户的Cookie中。我们通过VBScript实现:
<% Response.Cookies("verifycode") = Int((Randomize() )) %>
紧接着,我们也为JavaScript用户提供了同样的功能:
<% Response.Cookies("verifycode") = Math.floor(Math.random() ); %>
上述代码确保了每个用户都会获得一个独特的验证码,并将其存储在Cookie中。我们的目标是确保验证过程的公正性和安全性,使每个用户都能获得同样的机会进行验证。接下来,我们只需将原先的针对Cookies("password")的验证更改为对Cookies("verifycode")的验证即可。通过这一改动,我们提高了验证过程的安全性,降低了因Cookies欺骗导致的风险。我们的ASP程序现在更加稳固,能够更好地保护用户信息的安全。这一改进不仅提升了用户体验,也增强了我们对恶意攻击的防御能力。通过这种方式,我们确保了用户信息的安全传输与存储,使得我们的ASP程序在网络安全领域更加可靠。这一改进充分显示了我们对于网络安全与用户隐私的承诺和重视。从今往后,我们的程序将不再受Cookies欺骗漏洞的威胁,为用户提供更加安全、可靠的服务体验。我们也鼓励用户保持警惕,时刻关注网络安全动态,共同维护一个安全、健康的网络环境。通过Cambrian框架的‘body’渲染,我们的程序得以完美呈现给用户,为用户提供流畅、友好的使用体验。
编程语言
- Cookies 欺骗漏洞的防范方法(vbs+js 实现)
- JavaScript编写连连看小游戏
- 阿斗太子是什么意思
- PHP解析xml格式数据工具类示例
- 使用Angular CLI从蓝本生成代码详解
- javascript实现可拖动变色并关闭层窗口实例
- 11种ASP连接数据库的方法
- 重庆为遇难老师追授优秀教师称号
- 微信小程序商城项目之购物数量加减(3)
- php实现通过cookie换肤的方法
- 深入理解 webpack 文件打包机制(小结)
- .NET Core 处理 WebAPI JSON 返回烦人的null为空
- Vue数据监听方法watch的使用
- git使用教程(最详细、最傻瓜)
- 0和1第一次教学视频
- xpath简介_动力节点Java学院整理