2016-09-05 3 views
0

Я немного смущен здесь. У меня есть страница формы и действия для обработки входа пользователя. В настоящее время моя страница действия игнорирует капитализацию пароля. Будь вы используете строчные буквы или все колпачки для пароля, страница action.cfm регистрирует вас, если значение верное. Я хочу, чтобы он был ТОЛЬКО для входа в систему, если используется правильный пароль. Как я могу это решить?Установка строгих правил пароля

Форма:

<form name="login" target="_self" method="POST" action="action.cfm"> 
    Username: <input name="UserName" type="text"><br/> 
    Password: <input name="Password" type="password"><br/> 
    <input name="" type="submit" value="Login"> 
</form> 

action.cfm:

<cfquery name="qVerify" datasource="me.mdb"> 
    SELECT UserName, Password 
    FROM rbs 
    WHERE UserName = '#UserName#' 
    AND  Password = '#Password1#' 
</cfquery> 
<cfif qVerify.RecordCount> 
    <cfset session.allowin = "True"> 
    <!--- Now welcome user and redirect to "accessgranted.cfm" ---> 
    <CFLOCATION URL="successful.html"> 
<cfelse> 
    <script> 
    alert("ACCESS NOT GRANTED. CHECK YOUR LOGIN PARAMETERS."); 
    self.location="loginpage.html"; 
    </script> 
</cfif> 
+6

Похоже, ваши пароли хранятся простой текст в базе данных. Они должны быть хэшированы немедленно, если не раньше. –

+0

Спасибо Мэтт. Но как сделать хэш-пароли в доступе db? – Foxlon

+0

Выполняли ли вы поиск по паролям хеширования ColdFusion? Там должно быть много примеров. – Leigh

ответ

1

Вы должны сохранить пароли без преобразования в нижний или верхний корпус. Затем, проверяя пароль на странице входа, вы должны сравнивать их так же.

По умолчанию сравнение будет выполнено без изменения нижнего или верхнего регистра.

Проверьте код с боковой стороны сервера.

+0

Спасибо alireza. Но я все равно не понимаю. Пароль не преобразуется в нижний или верхний регистр. Например, если ваш пароль для входа - любовь, если вы введете LOVE в качестве пароля для входа в систему, он все равно войдет в систему. Как я могу это решить? – Foxlon

+0

ВЫБРАТЬ UserName, Password FROM РБС WHERE UserName = '# UserName #' AND Password = '# Password1 #' Foxlon

+2

@Foxlon:. Пожалуйста, не оставляйте код в комментариях, редактировать свой вопрос и добавить его там – Andre

3

Сравнения в доступе всегда учитывают регистр.

Так запрос

SELECT foo FROM bar WHERE foo = 'HELLO' 

также возвращает записи с Foo = hello или Hello.

Но: вы все равно не должны хранить пароли в открытом виде. Хеши их, и проблема решает сам.

+1

Кроме того, всегда используйте [cfqueryparam] (https://helpx.adobe.com/coldfusion/cfml -reference/coldfusion-tags/tags-pq/cfqueryparam.html) – Leigh

0

Ваша таблица сравнения нечувствительна к регистру.

Проверьте пароль с помощью ColdFusion с учетом регистра. Например, с функцией compare(), чувствительной к регистру, тогда как compareNoCase() не учитывает регистр. Compare() возвращает 0, если строки равны.

Ваш код будет выглядеть следующим образом:

<cfquery name="qVerify" datasource="me.mdb"> 
    SELECT UserName, Password 
    FROM rbs 
    WHERE UserName = <cfqueryparam value="#form.UserName#"> 
    AND  Password = <cfqueryparam value="#form.Password#"> 
</cfquery> 
<cfif qVerify.RecordCount and compare(qVerify.username, form.username) eq 0 and compare(qVerify.password, form.password) eq 0> 
    <cfset session.allowin = "True"> 
    <!--- Now welcome user and redirect to "accessgranted.cfm" ---> 
    <CFLOCATION URL="successful.html"> 
<cfelse> 
    <script> 
    alert("ACCESS NOT GRANTED. CHECK YOUR LOGIN PARAMETERS."); 
    self.location="loginpage.html"; 
    </script> 
</cfif> 
+1

Хотя технически верно, [пароли НЕ должны храниться в виде обычного текста] (http://security.stackexchange.com/questions/36833/why-should- i-hash-пароли). По соображениям безопасности они должны быть хэшированы. Как указывает [Andre указывает] (http://stackoverflow.com/a/39350339/104223), который также имеет счастливый побочный эффект, -issue ... – Leigh

+0

Спасибо, но как сделать хэш-пароль в доступе db? – Foxlon

+0

@maertsch, его работа сейчас. Я хочу узнать, как хэш-пароли с coldfusion. Спасибо. – Foxlon

Смежные вопросы