我在经典的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;
?由于
答案 0 :(得分:4)
首先,有人可能会通过尝试传递用户名(例如
)来破坏您的系统&#39 ;; DROP TABLE用户
始终,始终使用参数化查询。
永远不要相信UI有关安全的任何事情。客户端可以观察您设置的所有cookie,并将任何cookie返回给您想要的cookie。如果这不是HTTPS,则中间的某个人也可以观察来回发送的cookie。
不要重新发明安全框架。他们很难做对。