[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярное выражение для пароля
tanaevser
Добрый день!
Помогите пожалуйста с регулярным выражением на php ( функция preg_match() ) для пароля.

Цитата
Пароль должен содержать от 6 до 20 символов. Можно использовать латинские буквы, цифры и символы из списка:
! @ # $ % ^ & * ( ) _ - + : ; , .




Спустя 14 минут, 21 секунда (28.03.2011 - 16:20) DedMorozzz написал(а):
какие нить идеи есть? Задача простейшая. Предложи свой вариант сперва.

Спустя 2 минуты, 7 секунд (28.03.2011 - 16:22) alex12060 написал(а):
DedMorozzz

Да, вопрос простой, но интересно, как можно запихнуть все символы эти ! @ # $ % ^ & * ( ) _ - + : ; , . в один блок? Сборку всмысле. Или переписывать каждый, комментируя спецсимволы?

Спустя 55 секунд (28.03.2011 - 16:23) DedMorozzz написал(а):
да, так проще и надежнее всего

Спустя 3 минуты, 12 секунд (28.03.2011 - 16:26) tanaevser написал(а):
Товарищ подсказал таким способом if(strlen($pass)==substr_count($pass, 'a')+.....){}else{}

Но как-то писать это лень =) Вот и решил посоветоваться тут. Может кто-то уже писал такую регулярку...

Спустя 1 час, 28 минут, 29 секунд (28.03.2011 - 17:54) DedMorozzz написал(а):
if(!preg_match('#[A-z!@\#$%^&*\(\)_\-\+:;,\.]{6,20}#',$text){
echo "you bad man";
}
else{
echo "Yep!";
}

Спустя 46 минут, 58 секунд (28.03.2011 - 18:41) Ulan написал(а):
DedMorozzz, решетку экранировать забыл

Спустя 7 минут, 37 секунд (28.03.2011 - 18:49) DedMorozzz написал(а):
ага, точно. Все спец символы проэкранировал, а про решетку забыл smile.gif
Исправил.

Спустя 1 час, 28 минут, 27 секунд (28.03.2011 - 20:18) tanaevser написал(а):
Спасибо! Не пробовал, но в сайт воткнул =)

Спустя 1 час, 11 минут, 8 секунд (28.03.2011 - 21:29) twin написал(а):
А зачем это, можно полюбопытствовать?

Спустя 1 минута, 1 секунда (28.03.2011 - 21:30) Winston написал(а):
Цитата (tanaevser @ 28.03.2011 - 19:18)
Спасибо! Не пробовал, но в сайт воткнул =)

laugh.gif

Спустя 44 минуты, 38 секунд (28.03.2011 - 22:14) inpost написал(а):
PHPprogramer
Суровые парни! Если что не так, то сразу ВОТКНУТЬ! Опасно с ним спорить, ато воткнёт...

Спустя 31 минута, 14 секунд (28.03.2011 - 22:46) tanaevser написал(а):
Не работает...
Нельзя сразу вводить и цифры и заглавные и маленькие буквы. Нужно убирать либо заглавные, либо цифры...

P.S. Это нужно для стандарта. Все крупные сайты используют иммено такой набор допустимых символов (Яндекс, Вконтакте, Фейсбук, Одноклассники, Майл, Гугл и т.п.).

Спустя 40 минут, 34 секунды (28.03.2011 - 23:26) Winston написал(а):
Цитата (tanaevser @ 28.03.2011 - 21:46)
Нельзя сразу вводить и цифры и заглавные и маленькие буквы. Нужно убирать либо заглавные, либо цифры...

Просто DedMorozzz забыл цифры разрешить. Вот так тогда:
    if(!preg_match("#[A-z!@\#$%^&*\(\)_\-\+:;,\.0-9]{6,20}#",$text))
{
echo "you bad man";
}
else
{
echo "Yep!";
}

Спустя 28 минут, 5 секунд (28.03.2011 - 23:54) kirik написал(а):
Цитата (twin @ 28.03.2011 - 13:29)
А зачем это, можно полюбопытствовать?

Надо же ограничивать юзеров.., а то совсем на шею сядут..

Спустя 28 минут, 1 секунда (29.03.2011 - 00:22) Trianon написал(а):
Цитата
Пароль должен содержать ...

Кому это, и с каких гвоздей он что-то должен?
Или Вы исключительно для паролей себя-любимого эту форму делаете?

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


Цитата
P.S. Это нужно для стандарта. Все крупные сайты используют иммено такой набор допустимых символов (Яндекс, Вконтакте, Фейсбук, Одноклассники, Майл, Гугл и т.п.).


Чушь форменная.
Никакого стандарта на максимальную длину пароля и его репертуар символов нет и быть не может по определению.
Вид пароля определяется только и исключительно тем, кто его придумывает.
И любые ограничения в конечном итоге лишь уменьшают его стойкость.

PS/. Поражаюсь, сколько сразу нашлось добровольцев "помочь"... в решении совершенно дикой, из пальца высосанной проблемы.

Спустя 5 дней, 19 часов, 11 минут, 47 секунд (4.04.2011 - 19:34) tanaevser написал(а):
PHPprogramer, спасибо. Вроде работает.

Ну как бы такой набор используют все крупные сайты. Майл.ру, Яндекс, Гугл, Фейсбук, ВКонтакте, Одноклассники и т.п.

Тем более мой сайт узко связан с Яндексом по API, такая мера пароля просто необходима, чтобы Яндекс не выдавал ошибки при регистрации...

Спустя 10 минут, 38 секунд (4.04.2011 - 19:45) alex12060 написал(а):
Специально зашел на Яндекс и решил проверить Вашу версию.



Как выбрать пароль
Пароль должен содержать от 6 до 20 символов. Можно использовать латинские буквы, цифры и символы из списка:
! @ # $ % ^ & * ( ) _ - + : ; , .


Обратите внимание на фразу: Можно использовать

Я Вам попробую объяснить...

Можно никак не равно (эквивалентно) слову Нужно, ни по определению, ни по значению.

Можно, значит, допускается (Возможно), но, если Вы не используете этот набор символов, это не значит, что Вы как-то что-то нарушили и Вас не авторизуют.

Нужно, значит обязательно (Необходимо, Без этого ни туда, ни сюда).

Надеюсь, разница Вам ясна, поэтому, бросьте в сторону эти мысли и просто, забудьте об этом.

Конечно, лучше было бы Яндексу написать Рекомендуется, а не то, но все-же.
А вот если придраться к надписи Пароль должен содержать от 6 до 20 символов, то здесь слово Должен есть, поэтому, это обязательно!

Это сделано из-за соображений безопасности и "антимусорства", так как желательно пользоваться паролями, длинной более 6, но а пароли более 20 символов реально забыть, поэтому, люди начнуть плодить ящики.

Так что, оставьте лишь определение от 6 до 20 символов.

Спустя 9 минут (4.04.2011 - 19:54) DedMorozzz написал(а):
Цитата
Это сделано из-за соображений безопасности и "антимусорства", так как пароль < 6 символов - не пароль
Обоснуй

Спустя 1 минута, 19 секунд (4.04.2011 - 19:55) alex12060 написал(а):
Ты наверное имел ввиду это:

Цитата
так как пароль < 6 символов - не пароль


Хотя, да, я погорячился, если намудрить там, то получится хороший пароль. Затеру.

Спустя 13 часов, 34 минуты, 59 секунд (5.04.2011 - 09:30) MaximGQ написал(а):
Это конечно PHP форум, но попробуй с JS Spry, очень много возможностей. Смотри чтоб путь к JS был указан верно, куда ты его скопируешь.

<head>
<script src="SpryValidationPassword.js" type="text/javascript"></script>
<link href="SpryValidationPassword.css" rel="stylesheet" type="text/css" />

...
<body>
<span id="sprypassword1">
<input type="password" name="password1" id="password1" />
<span class="passwordRequiredMsg">Значение является обязательным.</span><span class="passwordInvalidStrengthMsg">Пароль не соответствует установленному уровню безопасности.</span></span>

<script type="text/javascript">
var sprypassword1 = new Spry.Widget.ValidationPassword("sprypassword1", {minSpecialChars:1, minAlphaChars:4, minNumbers:4, maxNumbers:8, maxAlphaChars:8, minUpperAlphaChars:1, maxUpperAlphaChars:4, maxSpecialChars:2});
</script>
</body>

Спустя 2 минуты, 39 секунд (5.04.2011 - 09:33) Ulan написал(а):
на Хабре недавно статейка была, в которой чувак жаловался, что какой-то сервис ему не дает ввести пароль в 17 символов biggrin.gif максимум 16.
у него, панимаешь, вся криптостойкость теряется без последней буквы. так, что не надо ограничивать юзеров smile.gif

Спустя 3 минуты, 13 секунд (5.04.2011 - 09:36) MaximGQ написал(а):
В предыдущем сообщении JS прикреплен файлом. Здесь CSS файл с именем "SpryValidationPassword".

Свернутый текст
@charset "UTF-8";
/* SpryValidationPassword.css - version 0.1 - Spry Pre-Release 1.6.1 */
/* Copyright © 2006. Adobe Systems Incorporated. All rights reserved. */


/* These are the classes applied on the error messages
* which prevent them from being displayed by default.
*/

.passwordRequiredMsg,
.passwordInvalidStrengthMsg,
.passwordMinCharsMsg,
.passwordMaxCharsMsg,
.passwordCustomMsg,
.passwordValidMsg {
display: none;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
color:#F00;
}

/* These selectors change the way messages look when the widget is in one of the error states.
* These classes set a default red border and color for the error text.
* The state class (e.g. .passwordRequiredState) is applied on the top-level container for the widget,
* and this way only the specific error message can be shown by setting the display property to "inline".
*/

.passwordRequiredState .passwordRequiredMsg,
.passwordMinCharsState .passwordMinCharsMsg,
.passwordMaxCharsState .passwordMaxCharsMsg,
.passwordInvalidStrengthState .passwordInvalidStrengthMsg,
.passwordCustomState .passwordCustomMsg
{
display: inline;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
color:#F00;
}

/* The next three group selectors control the way the core element (INPUT) looks like when the widget is in one of the states: * focus, required / invalid Strength / minValue / maxValue / custom invalid , valid
* There are two selectors for each state, to cover the two main usecases for the widget:
* - the widget id is placed on the top level container for the INPUT
* - the widget id is placed on the INPUT element itself (there are no error messages)
*/

/* When the widget is in the valid state the INPUT has a green background applied on it. */

.passwordValidState input, input.passwordValidState {
background-color: #B8F5B1;
}

/* When the widget is in an invalid state the INPUT has a red background applied on it. */
input.passwordRequiredState, .passwordRequiredState input,
input.passwordInvalidStrengthState, .passwordInvalidStrengthState input,
input.passwordMinCharsState, .passwordMinCharsState input,
input.passwordCustomState, .passwordCustomState input,
input.passwordMaxCharsState, .passwordMaxCharsState input {
background-color: #FF9F9F;
}

/* When the widget has received focus, the INPUT has a yellow background applied on it. */
.passwordFocusState input, input.passwordFocusState {
background-color: #FFFFCC;
}



 ! 

М
тут был я и скрыл этот ужас
kirik

Спустя 10 секунд (5.04.2011 - 09:36) kirik написал(а):
Цитата (MaximGQ @ 5.04.2011 - 01:30)
попробуй с JS Spry

20кб JS кода только для того чтобы проверить пароль???! Самым простым способом это делается в одну регулярку, а ещё более простой способ - не мучать пользователей своими тараканами (выше уже писали почему).

UPD
и 2.5кб CSS...

Спустя 5 минут, 43 секунды (5.04.2011 - 09:42) MaximGQ написал(а):
ну если человек хочет обезопасить своих пользователей, может он на нато компромат собирает и на всех остальных, как этот.. на букву А.

так здесь проверка делается и по количеству заглавных символов и наличию/количеству цифр и т.д. и т.п. а еще и сообщение выходит при неправильном заполнении, ток замени последн.. строку на

var sprypassword1 = new Spry.Widget.ValidationPassword("sprypassword1", {minSpecialChars:1, minAlphaChars:4, minNumbers:4, maxNumbers:8, maxAlphaChars:8, minUpperAlphaChars:1, maxUpperAlphaChars:4, maxSpecialChars:2, validateOn:["change"]});

change или blur

UPD
20 кб вместе с инструкциями

Спустя 6 минут, 25 секунд (5.04.2011 - 09:48) kirik написал(а):
Цитата (MaximGQ @ 5.04.2011 - 01:42)
сообщение выходит при неправильном заполнении

Очень необходимая функция, согласен.

Спустя 16 минут, 49 секунд (5.04.2011 - 10:05) MaximGQ написал(а):
Цитата (MaximGQ @ 5.04.2011 - 06:36)
тут был я и скрыл этот ужас

А почему кстати загрузка CSS файлов не поддержана? А?

Спустя 6 минут, 8 секунд (5.04.2011 - 10:11) kirik написал(а):
Цитата (MaximGQ @ 5.04.2011 - 02:05)
А почему кстати загрузка CSS файлов не поддержана? А?

Извините, господин, сейчас поправим unsure.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.