在最后的一句话,我没有ASP环境的机器上,我在这篇文章中进入,所以我道歉,所提供的代码失败。如果你发现代码中的任何问题,欢迎拍砖~ ~我的皮肤
一、进攻原则
Cookie欺骗主要是基于当前网络中的一些用户管理系统,它将用户登录信息存储在cookie中,这是相对不安全的。它比SQL注入漏洞更难攻击,但它仍然非常愚蠢。
我们知道,一般基于Cookies的用户存储系统将两个变量在饼干:用户名和用户级,其中用户名是用户,而用户级是用户的水平。当我们的浏览器访问网页,它会失去一样
获取/… / file.asp HTTP 1
…
饼干:用户名= useruserlevel = 1
…
数据包,然后,我们要知道管理员的用户名和用户级的值(假设管理员和5,分别),通过传输。
获取/… / file.asp HTTP 1
…
饼干:用户名= adminuserlevel = 5
…
获得管理员权限。容易吗然而,在发现此漏洞之前,几乎所有的用户管理系统都依赖cookie。
二、安全存储用户信息
由于cookie不安全,而且我们必须存储用户登录信息,我们应该把它存储在哪里
我们注意到在ASP,除了cookie之外,还有会话存储信息。会话存储在服务器上,而不是客户端可以随意更改,因此它具有很高的安全性。这样,您就可以将所有cookie代码更改为会话。
三。长期存储用户信息
使用会话保存用户登录信息,尽管出于cookie欺骗问题,但会话不能长期存储(在用户停止响应失败后20分钟内默认的IIS会话),然后有一段cookie +会话混合存储方法。
这个方法有两个变种,一是保存用户名和密码的饼干,当用户访问一个网页,读会话,如果内容是基于会话,或阅读的饼干,根据提供的用户名和密码来登录一次不透明的饼干,用来判断饼干内容的合法性,如果法律然后存储在会话。代码实现方法如下:
Vbs:
复制代码代码如下所示:
<
模糊用户名、密码
用户名=会话(用户名)
如果用户名,那么
会话中没有用户登录信息。
用户名=请求。
密码=请求。
请注意上面两个句子的用户名和密码,以防止SQL注入(即过滤单引号)。
如果用户名或密码,则
用户没有登录
…
其他的
这里假设Conn和RS被创建的对象
,打开选择前1 * { },用户名为用户的用户名和密码=密码
如果rs.eof然后
cookie中的信息是非法的。
…
其他的
cookie的信息是合法的,自动登录
会话(用户名)=用户名
…
最后如果
最后如果
其他的
会话中已经存在用户信息并直接读取
…
最后如果
%>

Js:
复制代码代码如下所示:
<
用户名、密码;
用户名=会话(用户名)+ ;
如果(用户名= =| | {用户名= =未定义)
会话中没有用户信息
用户名= cookie;
密码=请求;
注意以上两种预防方法:获取用户名和密码到SQL注入(即筛选出),这里省略
如果(用户名= =用户名| | = =不确定的密码密码| | | = = = = | undefined){
用户没有登录/
…
}
{其他
它是假定 / /创建连接对象和RS
RS(开放选择前1的用户,用户名为{ }+用户名+和密码=+密码+,Conn,1, 3);
如果(rs.eof){
非法信息
…
}
{其他
在合法的自动登录中的cookie信息
会话(用户名)=用户名;
…
}
}
}
{其他
会话中已经存在用户信息,直接读取
…
}
%>

但是这种方法对用户来说并不十分安全。The reason is that browsers will transmit Cookies every time they visit pages, and the Cookies containing passwords will be stolen if they are acquired by others.In this case, there were second methods, that is to add a verifycode field in the user information in the database, when the user is logged in, randomly generated a long integer parity values are stored in the verifycode field, and the username and the verifycode value than password stored in Cookies.While validating user information in Cookies, only username and verifycode are verified.The advantage of this method is that even if the user's Cookies is acquired by hackers, he can only use the temporary verifycode to login, but not get the user's password.As long as the user is logGED与用户名和密码,该附加码值会改变,和黑客将无法登录到原来的附加码。
此方法的实现只需要对上述方法的代码进行一点修改。首先,在登录程序中,需要添加一段来验证用户信息存储在何处。
Vbs:
复制代码代码如下所示:
<
响应。饼干(附加码)= int(RND×2100000000)
%>

Js:
复制代码代码如下所示:
<
响应。饼干(附加码math.floor(Math.random)=()×2100000000);
%>

然后,上面提供的验证码进行验证的饼干(密码)到饼干的验证(附加码)。
四。结论
通过我们的分析和处理,cookie欺骗漏洞得到了彻底的解决,我们的ASP程序变得更加安全。