Có nhiều cách để thực hiện một cái gì đó như thế này, nhưng đây là một cách không quá khó để thực hiện:
Bạn cần một trang web có sẵn công khai ở đâu đó lưu trữ một tệp chứa băm các khóa cấp phép đã được đưa vào danh sách đen. Cách bạn quản lý tệp này tùy thuộc vào bạn, nhưng bản thân tệp chỉ cần có hàm băm trên mỗi dòng.
Sau đó, trên cơ sở định kỳ, phần mềm của bạn sẽ bắt đầu tải xuống tệp này (hầu hết các ngôn ngữ phía máy chủ cung cấp cho điều này) và sau đó tìm kiếm nó để băm của khóa cấp phép đã cài đặt. Nếu nó được tìm thấy, thì ứng dụng biết rằng nó sẽ chết cho đến khi danh sách đen được xóa.
MD5 hoặc tương tự cộng với một bí mật là đủ cho việc này. Bạn có thể nhận được fancier và yêu cầu ứng dụng gửi yêu cầu đến trang web của bạn và bạn tìm nó trong cơ sở dữ liệu một cách nhanh chóng, nhưng tệp (với những gì tôi cho là hy vọng sẽ là một danh sách ngắn) hy vọng sẽ còn nhỏ và có thể cách dễ nhất.
Phần khó hơn sẽ là giữ cho ứng dụng chết. Rốt cuộc, bạn đã lưu trữ nội dung này ở đâu đó bên trong, điều đó có nghĩa là nếu nó quá rõ ràng, nó có thể dễ dàng bị phá hủy và ngay cả khi nó không quá rõ ràng, nó có thể dễ dàng được hoàn nguyên bằng cách khôi phục (các) bảng thích hợp / các tập tin). Vì vậy, tôi đề nghị một phương pháp bảo vệ thứ hai là tốt.
Phương pháp này sẽ lưu trữ "TRỰC TIẾP" hoặc "CHẾT" (hoặc một cái gì đó đủ tương tự) trong một bảng hoặc một tệp, nhưng một lần nữa HASHed. Điều này cần phải được băm với muối của bạn VÀ dấu thời gian. Mỗi khi một trang trên ứng dụng của bạn chạy, hãy kiểm tra giá trị này bằng phiên bản băm "LIVE" + salt + dấu thời gian và sau đó cho phép một phạm vi dấu thời gian hợp lệ (ví dụ: một ngày, hai ngày, một tuần, một tháng, v.v. Hãy nhớ rằng phạm vi càng lớn, hiệu suất sẽ càng khó hơn.). Miễn là mọi thứ khớp (hoặc một trận đấu được tìm thấy), ứng dụng vẫn còn sống; mặt khác, ngay cả khi giá trị trong tệp hoặc bảng đặc biệt là "TRỰC TIẾP", nó vẫn sẽ bị chết nếu có nỗ lực khôi phục từ bản sao lưu vì dấu thời gian sẽ nằm ngoài ngưỡng của bạn.
Tóm lại (điều này giả định rằng bạn có một số phương pháp kiểm tra tính hợp lệ của khóa cấp phép, chẳng hạn như một số loại tổng kiểm tra hoặc phương pháp khác):
- Danh sách kiểm tra
- Chuyển đổi Key License thành băm với muối
- Yêu cầu tập tin danh sách đen từ máy chủ
- Là băm của tôi trong tập tin?
- Nếu CÓ, sau đó lưu trữ hàm băm của "CHẾT" + muối + dấu thời gian (cắt ngắn đến ngày; không cần lưu trữ giờ + ngày + phút)
- Nếu KHÔNG, thì lưu trữ hàm băm của "LIVE" + salt + dấu thời gian (trunc'd)
- IsKeyAlive
- Tạo hàm băm từ dấu thời gian "LIVE" + salt + trunc'd
- Tải hàm băm DeadAlive
- Họ có đồng ý không?
- Nếu CÓ, thì chúng ta còn sống; trả lại ĐÚNG.
- Nếu KHÔNG, thì chúng ta có thể đã chết, nhưng chúng ta vẫn có thể ở trong cửa sổ dấu thời gian của mình:
- Trừ một ngày từ dấu thời gian và lặp lại băm.
- Bây giờ chúng ta có đồng ý không?
- ĐÚNG? Trả lại ĐÚNG
- Thêm một ngày vào dấu thời gian và lặp lại hàm băm
- Bây giờ chúng ta có đồng ý không?
- ĐÚNG? Trả lại ĐÚNG
- Tại thời điểm này, chúng tôi nằm ngoài phạm vi dấu thời gian không có kết quả khớp. Trả lại SAI. (Tiêu diệt ứng dụng)
Bây giờ, lòng tốt biết có một triệu và một cách điều này có thể thất bại. Xem xét tất cả các cách có thể và xây dựng một hệ thống đáng tin cậy (bao gồm một cách giả định khách hàng là đúng nếu không thể tải xuống tệp danh sách đen). Kiểm tra, kiểm tra, kiểm tra nó và sau đó kiểm tra thêm một số trước khi triển khai, bởi vì nếu nó sai, bạn sẽ mất lòng tin của khách hàng.