经典的ASP Cookie漏洞

时间:2014-10-17 17:09:05

标签: cookies asp-classic

我在经典的asp页面上有一个简单的登录页面。

它需要表单中的用户名字段(" un")和密码(" pw")并使用它们执行以下操作:

<%
    un = newstr(request.form("un"))
    pw = newstr(request.form("pw"))

    SQL = "SELECT * from my_table WHERE un = '"&un&"' AND pw = '"&pw&"'"
    set cRS = oConn.Execute(SQL)

    if cRS.EOF then
    %>

        <p>Unable to log you in. Please <a href="default.asp">try logging in again</a>.</p>

    <%
    elseif NOT cRS.EOF then

        Response.Cookies("test") = "jeQmV4'QG)Eu'N-XSTC;pZeuwqUsjBdVv>Sqr!]ZhzB{dJ'p-#cYSdwY"
        Response.Cookies("test").Expires = Date() + 365

        response.redirect "main.asp"

    end if

end if
%>

然后我在每个页面顶部进行了一些简单的验证,其中包含我只想登录的用户才能看到,这样做:

<%
test = Request.Cookies("test")
if test = "" OR test <> "jeQmV4'QG)Eu'N-XSTC;pZeuwqUsjBdVv>Sqr!]ZhzB{dJ'p-#cYSdwY" then response.redirect("default.asp")
%>

我想检查 - 这是天真的简单吗?

有人可以轻易入侵我的网站,例如在他们的计算机上设置一个cookie,名为&#34; test&#34;其价值=&#34; jeQmV4&#39; QG)Eu&#39; N-XSTC; pZeuwqUsjBdVv&gt; Sqr!] ZhzB {dJ&#39; p-#cYSdwY&#34;?

或者不太可能有人会猜到&#34; jeQmV4&#39; QG)Eu&#39; N-XSTC; pZeuwqUsjBdVv&gt; Sqr!]的字符串值ZhzB {dJ&#39; p - #cYSdwY&#34;

由于

1 个答案:

答案 0 :(得分:4)

首先,有人可能会通过尝试传递用户名(例如

)来破坏您的系统
  

&#39 ;; DROP TABLE用户

http://xkcd.com/327/

始终,始终使用参数化查询。

永远不要相信UI有关安全的任何事情。客户端可以观察您设置的所有cookie,并将任何cookie返回给您想要的cookie。如果这不是HTTPS,则中间的某个人也可以观察来回发送的cookie。

不要重新发明安全框架。他们很难做对。