Тема: Сложность пароля (Движок DCMS-Social/Общие вопросы) facemas (25 Dec 2022 в 15:08) Да. Не сложно, на последних версиях dcms special, есть такая защита ALASTAR (25 Dec 2022 в 17:18) facemas, вот бы на социале такое. Страницы очень уязвимы на нем. facemas (25 Dec 2022 в 20:57) ALASTAR, вот реализовал в DSE новый способ ввода пароля. в reg.php <?php $world_set_update = $_POST[\'pass1\']; $file_default = file_get_contents(H . \'sys/add/if_password.txt\'); if (stripos($file_default, $world_set_update) !== false) { $err[] = __(\'Пароль слишком простой\'); } ?> файл в sys/add/ прописываем сами легкие пароли Владони (25 Dec 2022 в 21:59) facemas, Я чего то в новой версии вообще не нашёл ни кода такого ни txt файла. facemas (25 Dec 2022 в 22:01) Владони, только выйдет с новой версией ALASTAR (25 Dec 2022 в 22:41) facemas, да уже сделал и вроде все работает Владони (25 Dec 2022 в 22:46) ALASTAR, Спасибо не помешало бы))) ALASTAR (26 Dec 2022 в 08:51) --Цитата-- facemas (25 Dec 2022 в 20:57): ALASTAR, вот реализовал в DSE новый способ ввода пароля. в reg.php <?php $world_set_update = $_POST[\'pass1\']; $file_default = file_get_contents(H . \'sys/add/if_password.txt\'); if (stripos($file_default, $world_set_update) !== false) { $err[] = __(\'Пароль слишком простой\'); } ?> файл в sys/add/ прописываем сами легкие пароли ---------- facemas, а я txt папку создавал 🤣 протупил Saint (27 Dec 2022 в 03:58) --Цитата-- facemas (25 Dec 2022 в 20:57): ALASTAR, вот реализовал в DSE новый способ ввода пароля. в reg.php <?php $world_set_update = $_POST[\'pass1\']; $file_default = file_get_contents(H . \'sys/add/if_password.txt\'); if (stripos($file_default, $world_set_update) !== false) { $err[] = __(\'Пароль слишком простой\'); } ?> файл в sys/add/ прописываем сами легкие пароли ---------- facemas, Учитывая что это мой кусок кода (я не на что не претендую) , называть его \"новым\" , крайне не правильно .Ему около 8+ лет . Из словаря можно удалить все цифры и сделать проверку по цифрам в самом коде через is_numeric . Так же нужен запрет на ник который равный паролю . Это первостепенное что должно быть . Возможно я что-то ещё забыл из первого , эти 2-3 строчки кода могут спасти очень много сайтов . ------------- Получится должно что-то вроде этого if (stripos(file_get_contents(H.\'sys/add/if_password.txt\'), $_POST[\'pass1\']) !== false || $_POST[\'pass1\'] == $_POST[\'nick\'] || is_numeric($_POST[\'pass1\'])) { $err[] = \'Пароль слишком простой\'; } При серьезном подходе, погуглите часто используемые пароли, на текущий год . facemas (27 Dec 2022 в 09:10) Saint, Я не говорю, что мод новый. Внедрение новое, да, надо доработать его. Займусь со временем. Можно через админку базу Логинов сделать с возможность заливать файлы с базой. Идей много, а мозгов мало ALASTAR (27 Dec 2022 в 09:41) 10 миллионов паролей нашел но за 2021 год STEM (27 Dec 2022 в 13:47) А вы прям реально собираетесь при каждом запросе перебирать большие базы с паролями, чтобы что-то показать пользователю? Не проще ли сделать правило, что нужно как минимум столько-то цифр, столько-то букв, столько-то дополнительных символов? [i]Добавлено:[/i] На столько удивился, что пришлось спустя кучу лет восстановить пароль... ALASTAR (27 Dec 2022 в 14:28) STEM, и это вариант. Было бы не плохо facemas (27 Dec 2022 в 20:03) --Цитата-- STEM (27 Dec 2022 в 13:47): А вы прям реально собираетесь при каждом запросе перебирать большие базы с паролями, чтобы что-то показать пользователю? Не проще ли сделать правило, что нужно как минимум столько-то цифр, столько-то букв, столько-то дополнительных символов? [i]Добавлено:[/i] На столько удивился, что пришлось спустя кучу лет восстановить пароль... ---------- STEM, да нет смысла запрещать миллионы паролей, возможно самые простые типа password или 123456 . Я тебя поддерживаю ALASTAR (27 Dec 2022 в 20:07) facemas, а вот как такое сделать. Я только на таких проектах видел как на киви когда регу делаешь или пароль меняешь. facemas (27 Dec 2022 в 20:26) ALASTAR, так оно доступно на последней версии DSE. Заходишь /sys/add/if_password.txt в этом файле указываешь пароли, которые нельзя применять, так как они слишком простые. и пользователь не сможет их зарегистрировать ALASTAR (27 Dec 2022 в 20:59) facemas, я не так понял был. Но таких простых очень много и с этими базами брутят Сибирский (30 Dec 2022 в 10:17) Слабый пароль вводят не из-за тупости а из-за лени, и, плюс ко всему из-за \"низкой ценности\" самой реги. Замечая за собой рега делается на новом сайте чисто из любопытства, в этом случае я не заморачиваюсь над паролем, потому как знаю что больше никогда не вернусь на этот сайт. Но, вторая сторона, это когда из-за лени \"завсегдатаи\" сайта используют легкий пароль типа 123456. Можно ограничить количество символов, можно потребовать использовать правила составления пароля, но все это усложняет жизнь и так ленивому пользователю :) Почему не использовать хэш ссылку и не делать закладку на нее? Хэш ссылка дается при реге на особой страничке где просто делается закладка и меняется по желанию пользователя. такое подобие автологина, но автологин содержит логин (ид) плюс пароль, а хэш ссылка содержит только многозначный код, который запоминать пользователю не обязательно. biket (30 Dec 2022 в 13:35) --Цитата-- Сибирский (30 Dec 2022 в 10:17): Слабый пароль вводят не из-за тупости а из-за лени, и, плюс ко всему из-за \"низкой ценности\" самой реги. Замечая за собой рега делается на новом сайте чисто из любопытства, в этом случае я не заморачиваюсь над паролем, потому как знаю что больше никогда не вернусь на этот сайт. Но, вторая сторона, это когда из-за лени \"завсегдатаи\" сайта используют легкий пароль типа 123456. Можно ограничить количество символов, можно потребовать использовать правила составления пароля, но все это усложняет жизнь и так ленивому пользователю :) Почему не использовать хэш ссылку и не делать закладку на нее? Хэш ссылка дается при реге на особой страничке где просто делается закладка и меняется по желанию пользователя. такое подобие автологина, но автологин содержит логин (ид) плюс пароль, а хэш ссылка содержит только многозначный код, который запоминать пользователю не обязательно. ---------- Сибирский, А если пользователь потеряет ссылку? ALASTAR (30 Dec 2022 в 18:19) Сибирский, когда начнут ломать станицы, то по по-другому начинаешь думать. Людей не заставить сложные пароли делать и частую им не объяснить. Даже капча не помогает, без труда обходят. Сибирский (2 Jan 2023 в 09:29) biket, то же самое если забудет пароль, это другая проблема, но как можно потерять закладку? Это сложнее чем забыть сложный пароль, но как вариант. Идеальный способ - вход по отпечатку пальца или сетчатке глаза, но, сложность реализации и технические возможности устройств просмотра сайтов не оправдывают такого решения :) Пароль можно будет генерировать и отправлять например на почту, файл ключ, но его тоже можно потерять, нет идеального способа. По своему опыту скажу что как бы не сделать все равно будут терять доступ :) Это как в анекдоте про два металличесих шарика, один из которых был сломан другой потерян :) И тут скорее всего прав ALASTAR :) Сибирский (2 Jan 2023 в 09:32) --Цитата-- ALASTAR (30 Dec 2022 в 18:19): Сибирский, когда начнут ломать станицы, то по по-другому начинаешь думать. Людей не заставить сложные пароли делать и частую им не объяснить. Даже капча не помогает, без труда обходят. ---------- ALASTAR, я справлялся с этим путем пропуска первого набора, то есть, даже если логин пароль верный то первый ввод не пускает пользователя. Брут в таком случае пропускает пароль и переходит к следующему, а вот реальный человек пытается ввести его снова и второй раз он проходит, это единственный реальный способ был против того скрипта. Скиталец (3 Jan 2023 в 15:59) Вероятно бред предложу, устарел я... почему не усложнить жизнь юзверю как-нибудь так <?php if(isset($_POST[\'pass\'])) { $pass = $_POST[\'pass\']; if(preg_match(\"/([s])/\", $pass)) $err[] = \'Недопустимые символы в пароле\'; if(mb_strlen($pass)< 6) $err[] = \'Короткий пароль\'; $num = 0;// // Оценка сложности пароля // if(preg_match(\"/([0-9]+)/\", $pass)) $num++; else $err[] = \'В пароле должны быть цифры\'; if(preg_match(\"/([a-z]+)/\", $pass)) $num++; else $err[] = \'В пароле должны быть маленикие буквы\'; if(preg_match(\"/([A-Z]+)/\", $pass)) $num++; else $err[] = \'В пароле должны быть заглавные буквы\'; if(preg_match(\"/W/\", $pass)) $num++; else $err[] = \'В пароле должны быть символы\'; if(isset($err)) { foreach($err as $msg); echo($msg.\'<br/>\'); } else { $file = \'pass.ini\'; file_put_contents($file, $pass, FILE_APPEND | LOCK_EX); } } $arr = array( \'1\'=>\'Пароль очень слабый, он для хакера\', \'2\'=>\'Вас взломают! слабый пароль\', \'3\'=>\'Простой пароль! могут взломать\', \'4\'=>\'Неплохой пароль! запишите его\'); if(isset($num)) echo($arr[$num].\'<br/>\'); ?> <HTML> <form method=\"POST\"> <input type=\"password\" placeholder=\"Придумайте пароль\" name=\"pass\"> <input type=\"submit\" name=\"save\" value=\"Сохранить\"/></form> </HTML> несколько лет назад заморачивался нашел такой вариант на профике Скиталец (3 Jan 2023 в 16:07) --Цитата-- biket (30 Dec 2022 в 13:35): Сибирский, А если пользователь потеряет ссылку? ---------- biket, Гугл неплохо хранит пароли в аккаунте, и ты об этом (судя по авторизации) прекрасно знаешь ))) Saint (4 Jan 2023 в 01:54) Скиталец, Всё это скорее всего надо делать на js, ибо задумка хорошая и правильная . Но увы user experience не согласится .В случаи с паролями текста одобрения вообще не должно быть . таким образом ты берешь ответственность на себя , что странно , учитывая что пароль пользователя Saint (4 Jan 2023 в 01:59) Все эти автологины и т.п забудьте как страшный сон . не хочу разъяснять подробно но всё это прям крайнее не безопасно . Лучше сделайте нормальную авторизацию, регистрацию и систему кук продумайте . Напоминайте о смене пароля раз в пол года, не давайте ставить старые пароли . Помните должна быть мера . Ваша 4-факторная авторизация юзерам не упала . Они пришли не паролями заморачиваться, а потреблять и создавать контент . Скиталец (4 Jan 2023 в 08:41) Saint, сам оригинальный код и сделан на аяксе, я его просто убрал для наглядности тоесть сделал меньше букв. Могу оригинал выложить. Думаю ты не совсем прав, юзверь заморочится один раз, потом даже если забудет пароль, сможет его вспомнить по наводящему вопросу, раз ты категорически против хранения ключей в аккаунте. Сибирский (4 Jan 2023 в 09:38) Saint, крайне не безопасно делать это стандартным способом, если маленько подумать, то можно сделать очень даже безопасно и удобно. Но, когда встает дилемма подобного рода я обычно делаю оба способа и даю пользователю возможность выбрать. Скиталец (5 Jan 2023 в 11:52) --Цитата-- Saint (4 Jan 2023 в 01:54): Скиталец, Всё это скорее всего надо делать на js, ибо задумка хорошая и правильная . Но увы user experience не согласится .В случаи с паролями текста одобрения вообще не должно быть . таким образом ты берешь ответственность на себя , что странно , учитывая что пароль пользователя ---------- Saint, удивительно, но профик еще работает. Нашел исходный код на аяксе <?php <html> $(\'#pass\').keyup(function(e) { var strongRegex = new RegExp(\"^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*W).*$\", \"g\"); var mediumRegex = new RegExp(\"^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$\", \"g\"); var enoughRegex = new RegExp(\"(?=.{6,}).*\", \"g\"); if (false == enoughRegex.test($(this).val())) { $(\'#passstrength\').html(\'More Characters\'); } else if (strongRegex.test($(this).val())) { $(\'#passstrength\').className = \'ok\'; $(\'#passstrength\').html(\'Strong!\'); } else if (mediumRegex.test($(this).val())) { $(\'#passstrength\').className = \'alert\'; $(\'#passstrength\').html(\'Medium!\'); } else { $(\'#passstrength\').className = \'error\'; $(\'#passstrength\').html(\'Weak!\'); } return true; }); </html> ?> Источник http://profiwm.com/codes/code.php?id=2435 Почему-то не работает подсветка html кода, выделил как php Владони (6 Jan 2023 в 13:18) Скиталец, куда пихать этот кусок кода? Скиталец (6 Jan 2023 в 15:37) Владони, ну это аякс, его нужно заключить в теги <sсript> перевести на Русский подсказки, написать хотябы простейшие селекторы (можно и без них но с ними красивее) потом подключить библиотеки и форму в общем проще показать чем объяснить... сделать файл? У меня помимо этого есть еще несколько фишек для паролей на js это проверка одинаковые пароли в формах или нет подсказки каких символов не хватает и еще что то непомню уже... Дай мне 20 мин. Я сделаю примеры и передам тебе. Скиталец (6 Jan 2023 в 16:10) Владони, вот так я вижу подключение https://dcms-social.ru/obmen/Lichnye_fajly/12754.zip в файле pass.js все раскомментировано, пробуй пример рабочий можешь испытать на сервере Источник: http://www.dcms-social.ru/forum/13/34/63453/