У меня есть простая страница входа на классическую страницу asp.Уязвимость Classic ASP Cookie
Он принимает поле имени пользователя из формы («ООН») и пароль («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 на свой компьютер под названием «test» и значение которого = «jeQmV4'QG) Eu'N-XSTC; pZeuwqUsjBdVv> Sqr!] ZhzB {dJ'p- # cYSdwY"?
Или не было бы маловероятным, чтобы кто-то догадался, что строковое значение «jeQmV4'QG» Eu'N-XSTC; pZeuwqUsjBdVv> Sqr!] ЖЖБ {dJ'p- # cYSdwY "?
Благодаря
Это больше, чем уязвимость в cookie –
Вы повторно используете одну и ту же строку. Правильный способ сделать то, что вы пытаетесь достичь, - это либо сеансы ASP (они будут разными для каждого пользователя), либо сделать ваш собственный ключ разным для каждого пользователя, а затем сохранить его в вашей базе данных. Это все равно будет уязвимостью cookie и приведет к захвату сеанса, если кто-то угадает ключ, но поскольку они разные для каждого пользователя, тогда угадать вряд ли. Вы можете сделать второй шаг (что делают большинство банков), обнаружив устройство (обычно IP-адрес) и убедившись, что эти элементы также совпадают перед предоставлением доступа. – Frank