security — используйте PHP для сравнения строки с большим текстовым файлом (или … базой данных?)

У меня есть система входа в PHP 7, и я пытаюсь улучшить безопасность пароля. Я скачал огромный (15 гигабайт!) Список слов на https://crackstation.net/buy-crackstation-wordlist-password-cracking-dictionary.htm. Я хочу настроить его так, чтобы, когда пользователь пытается установить новый пароль, он сравнивался со списком слов и отклонялся, если был найден в списке.

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

(У меня также есть база данных MySQL, если это помогает, хотя я считаю, что предпочел бы оставить список в виде текстового файла.)

ОБНОВЛЕНИЕ: я предполагаю, что это включало бы некоторую логику, подобную процедурам сортировки, чтобы избежать прохождения всего списка построчно? То есть — если пароль начинается с «z», я должен перейти прямо к «z» s …

-1

Решение

Crackstation предоставляет библиотеку PHP для создания индекса и поиска значений. Смотрите инструкции здесь: https://github.com/defuse/crackstation-hashdb.

Поиск выполняется через LookupTable учебный класс: https://github.com/defuse/crackstation-hashdb/blob/master/LookupTable.php

Вы также можете использовать поддержку PHP для файлов данных CrackLib:

$dict = crack_opendict('/path/to/my_dictionary') or die('Failed to open file');
$check = crack_check($dict, $somePassword);
echo crack_getlastmessage();  // e.g.: 'weak password'
crack_closedict($dict);

Если ваши данные не в одном из этих форматов, вам нужно создать индекс для вашего набора данных, чтобы обеспечить эффективный поиск. Есть несколько инструментов командной строки, которые могут сделать это для вас, таких как SWISH ++.

3

Другие решения

Я думаю, что лучше придумать шаблон ограничения и оценки, который будет генерировать надежный пароль, и найти способ предотвратить использование такого списка в вашей системе, как ограничение попыток входа в систему с помощью одного и того же IP-адреса и увеличение alart, если общая скорость попыток поднимается выше норм, потому что список может меняться и увеличиваться с каждым днем.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector