2012-01-10 2 views
0

я наткнулся на упрощенном, но полезный способ защитить пароль страницы здесь: Pop up password protectASP защитить пароль улучшение

Вот код:

<% 

needAuthentication = True 

If Request.Form.Count > 0 Then 
    If Request.Form("username") <> "jon" Or Request.Form("password") <> "secret" Then 
     ' Redirect to another URI 
     Response.Redirect("/") 
     Response.End 
    End If 
    needAuthentication = False 
End If 

%> 
<html> 
<body> 
<% 

If needAuthentication Then 

%> 
<form method="post" action="thenameofthepage.asp"> 
    <div>Username: <input type="text" name="username" /></div> 
    <div>Password: <input type="text" name="password" /></div> 
    <div><input type="submit" value="Submit" /></div> 
</form> 
<% 

Else 

%> 
<p>Page content here</p> 
<% 

End If 

%> 
</body> 
</html> 

Два вопроса: 1) Как можно улучшить это означает, что при сбое пароля он вызывает окно предупреждения «Ошибка входа в систему» ​​и сбрасывает форму? 2) Насколько это небезопасно? Существуют ли методы ASP для повышения безопасности?

Несколько примечаний: Данных нет - это только страница, защищенная одним глобальным паролем. И, если вы уже не могли сказать, мои навыки ASP отсутствуют. Заранее спасибо.

UPDATE: (Оповещение работает с неудачной попыткой регистрации, но загрузки страниц контента в любом случае)

<% 
needAuthentication = True 
authenticationFailed = False 

If Request.Form.Count > 0 Then 
    If Request.Form("password") <> "secret" Then 
     authenticationFailed = True 
    End If 
    needAuthentication = False 
End If 

%> 


<html> 
<body> 

<% 
If needAuthentication Then 

%> 

<form method="post" action="passwordtest.asp"> 
    <div>Password: <input type="text" name="password" /></div> 
    <div><input type="submit" value="Submit" /></div> 
</form> 

<% 
Else 

%> 

<p>Page content here</p> 

<% 
End If 

%> 

<% 
If authenticationFailed Then 

%> 

<script type="text/javascript"> 
    alert("Invalid login"); 
</script> 

<% 
End If 
%> 

</body> 
</html> 
+0

Что значит, если пароль не удался? Вы имеете в виду, если идентификатор входа пользователя «jon», но пароль не «секретный»? –

+0

Исправить. Введен неверный пароль. Я даже не думал о пользователе - я действительно пытаюсь использовать это без «имени пользователя». –

ответ

0

Вы бы сделать что-то вроде:

authenticationFailed = False

А потом в Else разделе вашего заявления, комплект authenticationFailed = True.

Тогда на вашей странице есть что-то вроде:

<% 

If authenticationFailed Then 

%> 
<script type="text/javascript"> 
    alert("Invalid login"); 
</script> 
<% 

безопасности имеет много элементов. Предполагая, что вы можете хранить пароль в секрете и полагать, что никто другой не может получить доступ к этому файлу, то пока вы обращаетесь к сайту с помощью HTTPS, вы должны быть в порядке :) - обратите внимание, что там было много «ifs».

Если вы хотите узнать больше о безопасности, я бы порекомендовал googling тему. Безопасность напрямую связана с технологией, которую вы используете - хотя разные технологии пытаются и облегчают работу по-своему.

О, и еще одна вещь - этот способ входа в систему требует, чтобы вы входили в систему каждый раз, когда хотите получить доступ к защищенной странице. Он не помнит его, как вы могли ожидать. Вам нужно будет исследовать сеансы для этого - это тема сама по себе: http://www.w3schools.com/ASP/asp_sessions.asp.

+0

Спасибо за это, но что-то не так - я получаю 500-внутреннюю ошибку сервера при попытке загрузить страницу. –

+0

Его, вероятно, не хватает End If - Я только уволил эту идею - вам нужно обеспечить синтаксис и т. Д. Это были годы, так как я использовал Classic ASP, и я никогда не был пользователем VB. –

+0

Я добавил authenticationFailed = False прямо под needAuthentication = True, и вошел в «<% Если authenticationFailed Тогда %> <тип скрипта = "текст/JavaScript"> оповещения ("Invalid Войти"); ' под форму разметки –