Chuyển đến nội dung chính
cutty.dev
All posts

An toàn của các liên kết có mật khẩu — điều gì xảy ra khi bạn nhấp vào

Bạn có thể thêm mật khẩu vào liên kết rút gọn của mình. Chúng tôi sẽ giải thích những gì diễn ra bên dưới — không dùng thuật ngữ chuyên môn — và lý do tại sao việc này lại xứng đáng để thực hiện.

Một nửa các hướng dẫn về liên kết có mật khẩu đều bắt đầu bằng câu nói rằng đó là "một lớp bảo mật bổ sung". Và chỉ dừng lại ở đó. Theo ý kiến của tôi, đây chính là điều ít quan trọng nhất mà người ta có thể nói về nó.

Bởi vì "lớp bảo mật" không giải thích bất cứ điều gì cả. Nó không nói cho bạn biết điều gì sẽ xảy ra với mật khẩu đó, ai có thể nhìn thấy nó, hay khi nào thì nó thực sự có ý nghĩa. Và đó là những câu hỏi duy nhất đáng để tự hỏi trước khi bạn nhấn "Thêm mật khẩu".

Vậy thì theo thứ tự.

Mật khẩu của liên kết không giống như ổ khóa trên cổng

Mọi người tưởng tượng rằng mật khẩu sẽ khóa chặt liên kết một cách tuyệt đối. Thực tế không phải vậy. Bảo mật của các liên kết có mật khẩu hoạt động giống như một chiếc vé xem ca nhạc: ai có vé thì được vào. Ai đưa vé cho người khác, thì người đó cũng có thể cho người khác vào.

Nghe có vẻ như là một lỗi. Không phải vậy. Chỉ là cần phải biết cơ chế này dùng để làm gì.

Ba tình huống mà nó thực sự hữu ích:

Bảng giá dành cho khách hàng cao cấp hoặc tài liệu phiên bản beta, trước khi được công bố ra thế giới. Nếu không có mật khẩu, một liên kết như thế này sớm muộn gì cũng sẽ xuất hiện trên Google hoặc được truyền tay nhau.

Nội dung có ngày hết hạn. Ưu đãi chỉ áp dụng vào thứ Sáu. Tài liệu từ hội nghị dành riêng cho những người tham gia. Mật khẩu tạo ra một lối vào được kiểm soát thông qua liên kết — bạn biết rằng ai đó đã nhận được nó từ bạn, chứ không phải họ vô tình tìm thấy.

Điều thứ nhất là thứ mà bạn đăng tải hoàn toàn công khai, nhưng bạn vẫn muốn kiểm soát tình hình. Liên kết có thể được lan truyền. Dù sao thì nếu không có mật khẩu, cũng sẽ không ai vào được.

Và bây giờ là điều mà hướng dẫn này không được phép bỏ qua

Bạn nhập mật khẩu vào biểu mẫu. Ngay tại thời điểm đó, nó biến mất. Theo đúng nghĩa đen. Việc bạn đã thiết lập "tajne123" không còn tồn tại dưới dạng có thể đọc được trước khi bạn kịp thả nút ra.

Cái gì còn lại trong cơ sở dữ liệu? Không phải mật khẩu. Là dấu vân tay của nó. Nói một cách chuyên môn: hash. Một chuỗi các ký tự, cái mà chỉ khớp với mật khẩu của bạn khi có ai đó nhập chính xác những gì bạn đã nhập. Bản thân nó không tiết lộ bất cứ điều gì.

Tôi sẽ nói thẳng vì điều này rất quan trọng: tôi, người quản lý dịch vụ, không có cách nào để đọc được mật khẩu của bạn. Không phải vì tôi tử tế. Mà là vì về mặt vật lý, không có gì để đọc cả. Nếu ai đó đột nhập vào cơ sở dữ liệu, họ cũng chỉ lấy đi một xấp các dấu vân tay này mà thôi.

Thuật toán thực hiện việc tính toán này được cố tình làm cho chậm lại. Tôi biết rằng "chậm" nghe có vẻ như một lời phàn nàn, nhưng đó lại là một ưu điểm. Mục đích là để bất kỳ ai đánh cắp được cơ sở dữ liệu đều phải mất một khoảng thời gian vô lý để đoán thử dù chỉ là một mật khẩu. Chúng ta đang nói về hàng năm trời, chứ không phải hàng giây.

Cú nhấp chuột từ phía bên kia

Ai đó nhận được liên kết của bạn và nhấp vào. Thay vì đến thẳng mục tiêu, họ thấy một màn hình: "liên kết này được bảo vệ bằng mật khẩu", một trường để nhập và một nút bấm.

Nhập vào. Máy chủ so sánh những gì đã nhập với dấu vân tay đã lưu. Có khớp không? Nhận được một session token có hiệu lực trong một ngày. Trong 24 giờ tiếp theo, chỉ cần quay lại liên kết mà không cần nhập bất cứ thứ gì. Không cần phải ghi nhớ, không cần phải vất vả.

Không khớp? Lỗi. Năm lần sai từ cùng một địa chỉ IP và quyền truy cập sẽ bị khóa trong năm phút. Một bot cố gắng dò mật khẩu liên tiếp sẽ phải đập đầu vào tường.

Những gì đơn giản là không có ở đây

Chúng tôi không lưu trữ mật khẩu dưới dạng văn bản thuần túy. Không ở bất cứ đâu. Ngay cả trong các tệp nhật ký (logs) mà tôi kiểm tra khi tìm lỗi.

Chúng tôi không gửi mật khẩu qua email. Điều đó có nghĩa là nếu ai đó quên mật khẩu, tôi sẽ không thể gửi lại cho họ vì tôi không biết nó. Bạn phải tự gửi chúng, bằng cùng một kênh như trước đây.

Và chúng tôi không cung cấp mật khẩu ra bên ngoài. Không có phân tích, không có marketing, không có AB nào chạm vào dữ liệu này. (Đây chính xác là nguyên tắc được áp dụng trong toàn bộ cutty.dev, không chỉ ở đây.)

Hai thói quen tạo nên sự khác biệt

Đầu tiên: đừng tự nghĩ ra mật khẩu. Tên công ty cộng với năm thành lập là một món quà cho bất kỳ ai biết bạn. Một trình tạo mật khẩu trên trình duyệt sẽ cho ra kết quả tốt hơn chỉ trong một giây.

Thứ hai, quan trọng hơn: đừng gửi mật khẩu qua cùng một kênh với liên kết. Liên kết đã được gửi qua email? Hãy gửi mật khẩu qua SMS. Hoặc ngược lại. Ý nghĩa là việc chiếm được một hộp thư sẽ không giúp ai có được trọn bộ thông tin.

Một chi tiết nhỏ mà ít người biết: bạn có thể tạo vài liên kết dẫn đến cùng một địa chỉ, nhưng với các nhãn khác nhau. Bạn cấp quyền truy cập cho năm người, mỗi người một liên kết riêng biệt. Một người cần phải rời đi? Bạn chặn liên kết của họ, những người còn lại thậm chí sẽ không nhận ra.

Bạn có thể thay đổi mật khẩu mà không cần tạo liên kết mới. Truy cập Bảng điều khiển, "Chỉnh sửa", nhập mật khẩu mới. Lưu ý: tất cả các phiên làm việc 24 giờ đang hoạt động sẽ bị ngắt ngay lập tức. Mọi người phải nhập lại mật khẩu từ đầu.

Ranh giới mà bạn nên biết trước

Hãy quay lại với chiếc vé xem buổi hòa nhạc. Mật khẩu giúp bảo vệ bạn khỏi các công cụ tìm kiếm và những vị khách không mời mà đến. Nó không thể bảo vệ bạn trước một người đã biết mật khẩu và quyết định chia sẻ nó với cả thế giới.

Nếu kịch bản của bạn nghe có vẻ là "chỉ duy nhất một người này được xem và không ai khác", thì mật khẩu là không đủ. Ở đây bạn cần tài khoản, đăng nhập và ủy quyền. Một đẳng cấp khác, một vấn đề khác.

Nhưng hãy giơ tay lên nào, có bao nhiêu lần bạn thực sự gặp phải kịch bản như vậy? Theo kinh nghiệm của tôi thì hiếm khi. Trong đại đa số các trường hợp, vấn đề chỉ đơn giản là "tôi không muốn ai đó từ ngoài đường đi vào đây". Và câu nói này là quá đủ rồi.

Nếu bạn muốn xem nó trông như thế nào từ bên trong — khi tạo liên kết, hãy mở rộng "Opcje zaawansowane" và chọn "Dodaj hasło". Phần còn lại sẽ tự động thực hiện.