Contents
Trong thế giới số hóa hiện nay, dữ liệu là tài sản quý giá và cần được bảo vệ. Hàng năm, hơn tám triệu người trở thành nạn nhân của tin tặc và hơn 2200 cuộc tấn công mạng xảy ra mỗi ngày. Với tỷ lệ tội phạm mạng đáng báo động như vậy, việc sử dụng các phương pháp tốt nhất để bảo vệ khỏi tin tặc trở thành ưu tiên hàng đầu. Một trong những khía cạnh quan trọng nhất của bất kỳ tài khoản nào là mật khẩu của nó. Nếu tin tặc xâm nhập được mật khẩu của bạn, họ có thể truy cập thông tin cá nhân của bạn, thậm chí là tài khoản ngân hàng, chỉ trong vài phút. Mặc dù điều này nghe có vẻ đáng sợ, nhưng bạn có thể học cách bảo mật mật khẩu của mình bằng cách sử dụng các phương pháp tốt nhất thông qua việc xây dựng chương trình Python để kiểm tra độ mạnh của nó.
Quy Tắc Thiết Lập Mật Khẩu Mạnh
Để thiết lập mật khẩu mạnh, bạn có thể xem xét việc áp dụng các quy tắc sau:
- Độ dài mật khẩu: Mật khẩu nên có ít nhất 12 ký tự. Độ dài càng lớn, cơ hội bị tấn công bằng phương pháp brute force càng giảm.
- Sự kết hợp ký tự: Mật khẩu nên chứa sự kết hợp của chữ thường, chữ in hoa, số và ký tự đặc biệt.
- Tránh lặp lại ký tự: Không nên lặp lại ký tự trong mật khẩu.
- Tránh thông tin cá nhân: Mật khẩu không nên chứa thông tin cá nhân như tên, số điện thoại, hoặc bất cứ điều gì mà ai đó có thể dễ dàng đoán được.
- Tránh từ điển: Mật khẩu không nên là từ phổ biến trong từ điển, mặc dù bạn có thể sử dụng từ trong cụm từ mật khẩu dài hơn.
- Không sử dụng lại mật khẩu: Mật khẩu không nên giống nhau cho nhiều tài khoản. Bạn có thể thiết lập trình quản lý mật khẩu để tự động điền các mật khẩu khác nhau cho các trang web mà không cần nhớ từng cái.
Có nhiều cách khác nhau để tạo mật khẩu không thể phá vỡ mà bạn có thể nhớ. Một số trong số đó là sử dụng câu đồng dao, trích dẫn từ phim, thuật ngữ ngành, và nhiều hơn nữa.
Kiểm Tra Độ Mạnh Mật Khẩu Bằng Python
Bạn có thể xây dựng một chương trình để kiểm tra độ mạnh của mật khẩu bằng cách kiểm tra các đặc điểm trên. Để thực hiện điều này, bạn sẽ cần hai module: string và collections.
Bạn cũng có thể sử dụng module getpass để ẩn mật khẩu khi người dùng nhập vào. Điều này giúp bảo vệ mật khẩu của bạn khi bạn phải nhập nó ở nơi công cộng. Để cài đặt getpass trong môi trường cục bộ, mở terminal và nhập:
pip install getpass4
Bạn có thể sử dụng lớp String để kiểm tra xem một ký tự có phải là chữ cái, số hay ký hiệu. Bạn có thể sử dụng collections để kiểm tra xem có ký tự nào trong mật khẩu lặp lại không.
Sử dụng từ khóa def để định nghĩa một hàm có tên check_password_strength() và truyền mật khẩu bạn sẽ nhận được làm tham số cho nó.
Khởi tạo sáu biến: lower_alpha_count, upper_alpha_count, number_count, special_char_count, length, common bằng không. Những biến này sẽ kiểm tra sự hiện diện của chữ cái thường, chữ cái in hoa, số, ký tự đặc biệt, độ dài, sự lặp lại của ký tự trong mật khẩu.
Truyền mật khẩu bạn nhận được từ người dùng vào hàm list() để chuyển đổi nó thành danh sách các ký tự. Sử dụng vòng lặp for, lặp qua từng ký tự của danh sách. Sử dụng câu lệnh if-else để kiểm tra xem ký tự có phải là chữ cái thường, chữ cái in hoa, số hay ký tự đặc biệt và cập nhật số lượng tương ứng.
Bạn có thể giả định rằng bất cứ thứ gì khác ngoài chữ cái hoặc số là ký tự đặc biệt. Để hạn chế hơn, bạn có thể lưu trữ các ký tự đặc biệt dưới dạng chuỗi và kiểm tra xem ký tự của mật khẩu có nằm trong đó không. Ngoài ra, một số trang web cho phép bạn sử dụng khoảng trắng trong mật khẩu. Bạn có thể thiết lập một biến khác và tăng nó hoặc xem xét nó trong số lượng ký tự đặc biệt.
import string
import collections
def check_password_strength(password):
lower_alpha_count = upper_alpha_count = number_count = special_char_count = length = common = 0
for char in list(password):
if char in string.ascii_lowercase:
lower_alpha_count += 1
elif char in string.ascii_uppercase:
upper_alpha_count += 1
elif char in string.digits:
number_count += 1
else:
special_char_count += 1
Bạn sẽ cần một danh sách hoặc cơ sở dữ liệu mật khẩu để kiểm tra xem mật khẩu của người dùng có phổ biến không. Bạn có thể tải xuống danh sách một triệu mật khẩu phổ biến nhất từ kho GitHub Common-Credential của SecLists.
Lưu tệp văn bản dưới dạng common_password_list.txt. Sử dụng câu lệnh with để thực hiện xử lý ngoại lệ và mở tệp mật khẩu ở chế độ đọc. Sử dụng hàm read() để lấy nội dung có trong tệp và lưu trữ nó trong một biến có tên là content.
Nếu mật khẩu người dùng nhập vào không có trong danh sách mật khẩu phổ biến, tăng giá trị của biến common lên một.
with open("common_password_list.txt", 'r') as file:
content = file.read()
if password not in content:
common += 1
Để kiểm tra độ dài của mật khẩu, chỉ cần truyền nó vào hàm len() và kiểm tra xem nó có lớn hơn hoặc bằng mười hai không. Nếu đúng, tăng giá trị của biến length.
if len(password) >= 12:
length += 1
Để kiểm tra sự lặp lại của ký tự trong mật khẩu, sử dụng lớp con Counter từ Collections. Counter là một bộ sưu tập không có thứ tự của các cặp khóa và giá trị, trong đó khóa là chính phần tử và giá trị là số lượng phần tử.
Sử dụng phương pháp list comprehension để tạo một danh sách các ký tự lặp lại từ từ điển bạn nhận được bằng cách sử dụng collections. Lặp qua từ điển và kiểm tra xem số lượng ký tự có lớn hơn một không. Nếu số lượng lớn hơn, thêm nó vào danh sách và lưu trữ nó trong repeated.
countOfWords = collections.Counter(password)
repeated = [i for i in countOfWords if countOfWords[i] > 1]
Bây giờ bạn đã có giá trị của từng đặc điểm, khởi tạo một biến có tên strength bằng không. Như tên gọi, bạn sẽ sử dụng biến này để kiểm tra độ mạnh của mật khẩu. Hệ thống điểm số là trên bảy, một điểm cho mỗi sự hiện diện của ký tự và đặc điểm của mật khẩu mạnh.
Kiểm tra xem số lượng chữ cái thường, chữ cái in hoa, số, ký tự đặc biệt có lớn hơn hoặc bằng một không và tăng strength lên một cho mỗi sự hiện diện. Tương tự, kiểm tra xem biến length và common có bằng một không và nếu độ dài của ký tự lặp lại bằng không. Nếu đúng, tăng giá trị của biến strength.
strength = 0
if lower_alpha_count >= 1:
strength += 1
if upper_alpha_count >= 1:
strength += 1
if number_count >= 1:
strength += 1
if special_char_count >= 1:
strength += 1
if length == 1:
strength += 1
if common == 1:
strength += 1
if len(repeated) == 0:
strength += 1
Sử dụng chuỗi nhiều dòng (ba dấu ngoặc kép) để hiển thị nhiều dòng văn bản trong một câu lệnh in duy nhất. Sử dụng phương pháp nội suy chuỗi hoặc f-strings để hiển thị số lượng đặc điểm. Bạn có thể thực hiện điều này bằng cách viết f ở đầu chuỗi trong câu lệnh in và đặt các biến trong dấu ngoặc nhọn. Bạn sử dụng nội suy chuỗi vì nội dung bên trong câu lệnh in là một chuỗi, nhưng giá trị của các biến là một số nguyên.
print(f"""
Your password has:-
{lower_alpha_count} lowercase letters
{upper_alpha_count} uppercase letters
{number_count} digits
{special_char_count} special characters
{length} length
{common} common
{repeated} repeated
"Password score: {strength}/7"
""")
Cuối cùng, sử dụng câu lệnh input để nhận mật khẩu từ người dùng và truyền nó vào hàm check_password_strength. Dựa trên độ mạnh của mật khẩu, chương trình sẽ hiển thị điểm số cùng với số lượng các đặc điểm có trong mật khẩu.
password = input("Enter the password: ")
check_password_strength(password)
Kết Quả Kiểm Tra Độ Mạnh Mật Khẩu
Khi nhập một mật khẩu mạnh dựa trên các đặc điểm đã đề cập, chương trình Python sẽ hiển thị độ mạnh là 7/7:
Khi nhập một mật khẩu yếu và phổ biến, chương trình Python sẽ hiển thị độ mạnh là 1/7:
Kết quả kiểm tra mật khẩu yếu
-
Tại sao mật khẩu dài lại an toàn hơn?
Mật khẩu dài hơn làm tăng số lượng kết hợp có thể, làm cho việc tấn công bằng phương pháp brute force trở nên khó khăn hơn. -
Có nên sử dụng cùng một mật khẩu cho nhiều tài khoản không?
Không, bạn nên sử dụng mật khẩu khác nhau cho mỗi tài khoản để giảm nguy cơ bị xâm nhập. -
Làm thế nào để biết mật khẩu của tôi có phổ biến không?
Bạn có thể kiểm tra mật khẩu của mình với các danh sách mật khẩu phổ biến, chẳng hạn như từ kho GitHub của SecLists. -
Tại sao nên tránh sử dụng thông tin cá nhân trong mật khẩu?
Thông tin cá nhân dễ bị đoán và có thể bị tin tặc khai thác để xâm nhập tài khoản của bạn. -
Làm thế nào để bảo vệ khỏi các cuộc tấn công kỹ thuật xã hội?
Chỉ mở liên kết từ nguồn đáng tin cậy và luôn kiểm tra tính xác thực của trang web trước khi nhập thông tin nhạy cảm. -
Có nên sử dụng trình quản lý mật khẩu không?
Có, trình quản lý mật khẩu giúp bạn tạo và lưu trữ các mật khẩu mạnh, khác nhau cho từng tài khoản. -
Làm thế nào để nhớ mật khẩu mạnh?
Bạn có thể sử dụng các cụm từ, câu đồng dao, hoặc trích dẫn từ phim để tạo mật khẩu dễ nhớ nhưng khó đoán.
Mật Khẩu và Bảo Mật
Mặc dù bạn có thể thiết lập mật khẩu mạnh nhất, nhưng vẫn có những cách khác mà tin tặc có thể xâm nhập vào hệ thống của bạn. 95% các cuộc tấn công mạng là kết quả của lỗi của con người. Một trong những phương pháp phổ biến nhất mà tin tặc sử dụng là kỹ thuật xã hội. Tin tặc có thể gửi cho bạn các liên kết giả mạo đến các trang web mạng xã hội hoặc thương mại điện tử trông có vẻ hợp pháp, nhưng sẽ làm lộ mật khẩu của bạn nếu bạn sử dụng chúng.
Để bảo vệ chống lại các kỹ thuật này, hãy đảm bảo chỉ mở các liên kết từ nguồn đáng tin cậy và chỉ nhập hoặc lưu trữ thông tin quan trọng một cách an toàn.