Данные являются жизненно важным активом в современном цифровом мире. Ежегодно более восьми миллионов человек становятся жертвами хакеров, и каждый день происходит более 2200 кибератак. При таком тревожном уровне киберпреступности использование лучших практик для защиты от хакеров становится приоритетом. Одним из наиболее важных аспектов любой учетной записи является ее пароль.
Если хакер взломает ваш пароль, он может получить доступ к вашей личной информации и даже к вашему банковскому счету в считанные минуты. Хотя это звучит пугающе, вы можете научиться защищать свои пароли, используя лучшие практики, создав собственную программу на Python, чтобы проверить ее надежность.
Различные правила установки надежных паролей
Вот некоторые правила надежного пароля, которые вы могли бы рассмотреть:
- Пароль должен быть не менее 12 символов. Чем длиннее пароль, тем меньше вероятность его компрометации методом грубой силы.
- Пароль должен содержать комбинацию строчных букв, прописных букв, цифр и специальных символов.
- Избегайте повторения символов в пароле.
- Он не должен содержать личные данные, такие как имена, номера телефонов или что-либо, что кто-то может легко угадать.
- Это не должно быть обычное словарное слово, хотя вы можете использовать слова в более длинных фразах пароля.
- Пароль не должен быть одинаковым для нескольких учетных записей. Ты можешь настроить менеджер паролей автоматически заполнять разные пароли для разных сайтов, не запоминая каждый из них.
Существуют разные способы создайте надежный пароль, который вы сможете запомнить. Некоторые из них используют детские стишки, цитаты из фильмов, отраслевой жаргон и многое другое.
Как проверить надежность пароля с помощью Python
Вы можете создать программу для проверки надежности пароля, проверив вышеуказанные характеристики. Для этой сборки вам понадобятся два модуля: нить и коллекции.
Вы также можете использовать получить пропуск модуль для скрытия пароля при вводе пользователем. Это помогает защитить ваш пароль, когда вам нужно ввести его публично. Чтобы установить getpass в вашей локальной среде, откройте терминал и введите:
точка установить getpass4
Вы можете использовать класс String, чтобы проверить, является ли символ буквой, цифрой или символом. Вы можете использовать коллекции, чтобы проверить, есть ли в пароле повторяющиеся символы.
Используйте ключевое слово def, чтобы определить функцию с именем check_password_strength() и передайте пароль, который вы получите в качестве параметра.
Инициализируйте шесть переменных: нижний_альфа_счет, upper_alpha_count, число_количество, special_char_count, длина, общий до нуля. Они будут проверять наличие строчного алфавита, верхнего регистра алфавита, цифр, специальных символов, длины, повторения символов в пароле.
Передайте пароль, полученный от пользователя, в список() функция для преобразования его в список символов. Используя цикл for, выполните итерацию по каждому символу списка. Используйте оператор if-else, чтобы проверить, является ли символ буквой нижнего регистра, алфавитом верхнего регистра, числом или специальным символом, и обновить счетчик соответственно.
Вы можете предположить, что любое другое слово из алфавита или числа является специальным символом. Для большего ограничения вы можете хранить специальные символы в виде строки и проверять, присутствует ли в ней символ пароля. Кроме того, некоторые веб-сайты позволяют использовать пробелы в пароле. Вы можете установить другую переменную и увеличить ее или учитывать ее в самом счетчике специальных символов.
Импортировать нить
Импортировать коллекциидефcheck_password_strength(пароль):
нижний_счет_альфа = верхний_счет_альфа = число_счет = специальный_счет_символов = длина = общий = 0
для обугливать список(пароль):
еслиуголь в string.ascii_lowercase:
нижний_альфа_счет += 1
Элиф уголь в string.ascii_uppercase:
верхний_альфа_счет += 1
Элиф уголь в строке.цифры:
число_счетчик += 1
еще:
special_char_count += 1
Вам понадобится список паролей или база данных, чтобы проверить, является ли пароль пользователя общим. Вы можете скачать список из миллиона самых популярных паролей с Репозиторий SecLists Common-Credential на GitHub.
Сохраните текстовый файл как common_password_list.txt. Используйте оператор with для обработки исключений и открытия файла паролей в режиме чтения. Использовать читать() чтобы получить содержимое, присутствующее в файле, и сохранить его в переменной с именем content.
Если пароль, который вводит пользователь, отсутствует в общем списке паролей, увеличьте значение общей переменной на единицу.
соткрыть("common_password_list.txt", 'р') какфайл:
содержимое = файл.чтение()
если пароль не в содержании:
общий += 1
Чтобы проверить длину пароля, просто передайте его лен () и проверьте, больше ли оно двенадцати или равно ему. Если это так, увеличьте значение переменной длины.
еслиЛен(пароль) >= 12:
длина += 1
Для проверки повторения символов в пароле используйте подкласс Counter из Collections. Счетчик — это неупорядоченный набор пар ключ-значение, где ключ — это сам элемент, а значение — количество элементов.
Используйте метод понимания списка, чтобы составить список повторяющихся символов из словаря, который вы получаете с помощью коллекций. Переберите словарь и проверьте, больше ли количество символов больше единицы. Если количество больше, добавьте его в список и сохраните в повторении.
количество слов = коллекции. Счетчик (пароль)
повторяется = [i для i в countOfWords, если countOfWords[i] > 1]
Теперь, когда у вас есть значения отдельных характеристик, инициализируйте переменную с именем force равным нулю. Как следует из названия, вы будете использовать эту переменную для проверки надежности пароля. Система начисления баллов – из семи, по одному баллу за каждое включение символа и характеристику надежного пароля.
Проверьте, больше или равно ли количество строчных букв, прописных букв, цифр и специальных символов единице, и увеличьте силу на единицу для каждого присутствия. Аналогичным образом проверьте, равны ли длина и общая переменная единице и равна ли длина повторяющегося символа нулю. Если это правда, увеличьте значение переменной прочности.
сила = 0
если нижний_альфа_счет >= 1:
сила += 1если upper_alpha_count >= 1:
сила += 1если число_счет >= 1:
сила += 1если special_char_count >= 1:
сила += 1если длина == 1:
сила += 1если общий == 1:
сила += 1
еслиЛен(повторяется)== 0:
сила += 1
Используйте многострочную строку (три кавычки) для отображения нескольких строк текста в одном операторе печати. Используйте буквальную интерполяцию Sring или f-строки или для отображения количества характеристик. Вы можете добиться этого, написав ф в начале строки в операторе печати и заключите переменные в фигурные скобки. Вы используете интерполяцию строк, так как содержимое оператора печати является строкой, а значения переменных — целыми числами.
Распечатать(ф"""Ваш пароль: -
{lower_alpha_count} строчных букв
{upper_alpha_count} заглавных букв
{number_count} цифр
{special_char_count} специальных символов
{длина} длина
{общий} общий
{повторяется} повторяется
"Оценка пароля: {сила}/7""")
Наконец, используйте оператор ввода, чтобы получить пароль от пользователя и передать его в check_password_strength функция. В зависимости от надежности пароля программа отобразит балл вместе с количеством характеристик, присутствующих в пароле.
пароль = ввод("Введите пароль:")
check_password_strength (пароль)
Вывод проверки надежности пароля
При вводе надежного пароля на основе упомянутых характеристик программа Python отображает надежность как 7/7:
При вводе слабого и распространенного пароля программа Python отображает силу как 1/7:
Пароли и безопасность
Хотя вы можете установить самый надежный пароль, существуют и другие способы, с помощью которых хакер может проникнуть в вашу систему. 95% кибератак происходят по вине человека. Одним из наиболее распространенных методов, используемых хакерами, является социальная инженерия. Хакер может отправить вам поддельные ссылки на социальные сети или веб-сайты электронной коммерции, которые выглядят законными, но скомпрометируют ваш пароль, если вы их используете.
Чтобы защититься от этих методов, убедитесь, что вы открываете ссылки только из надежного источника и надежно вводите или храните только важную информацию.