2012-05-11 15 views
13

Tôi đang gặp một vấn đề rất lớn. Đó là "Cách tạo giấy phép cho phần mềm của tôi".Làm cách nào để tạo Giấy phép cho Phần mềm Java của tôi?

OK, suy nghĩ này là chìa khóa giấy phép của tôi - 12345YW

khi người dùng nhập key bản quyền này, phần mềm sẽ cho phép ông sử dụng phần mềm. Được rồi, khi người dùng nhập khóa cấp phép, phần mềm của tôi phải nhớ rằng anh ta đã nhập khóa hợp lệ, phải không? (Vì từ lần sau trở đi, nó không phải nhắc hộp thoại giấy phép) Câu hỏi của tôi là, Làm cách nào tôi có thể thực hiện phần mềm để nhớ người dùng đã nhập giấy phép? Trong các ứng dụng dựa trên cửa sổ, hầu hết những gì họ làm là nhập một mục nhập vào cửa sổ đăng ký. Tôi có thể làm như vậy không? (Sau đó, những gì về Ubuntu và Mac?)

Tôi đã nghĩ đến việc viết một tệp .txt để phần mềm m có thể đọc và tìm xem có giấy phép được nhập hay không. Tuy nhiên đó là hệ thống bảo mật nhất mà tôi có thể nghĩ đến.

Vì vậy, nếu tôi nhập khóa cấp phép ở trên, làm cách nào để tôi có thể ghi nhớ phần mềm của mình? Tôi thực sự vui mừng nếu bạn có thể cho tôi một ví dụ mã quá (tức là: Tôi không biết làm thế nào để chỉnh sửa registry, trong trường hợp cửa sổ đăng ký, vv). Xin hãy giúp tôi ...

+4

Làm cho phần mềm "ghi nhớ" điều gì đó thật dễ dàng. Làm cho nó không tầm thường để hack là cái gì khác ... – Mysticial

+0

Sử dụng ứng dụng license4j nó sẽ giúp u ... kiểm tra video của họ trong youtube –

Trả lời

18

Phần mềm cấp phép chưa phải là vấn đề được giải quyết

Vị trí/cơ chế mà bạn lưu trữ trạng thái giấy phép hầu như không liên quan - đăng ký không an toàn hơn tệp văn bản - mất vài giây để truy cập nội dung và "ẩn" mục nhập trong một số backwater từ xa của sổ đăng ký không giúp gì nhiều.

Có lẽ, phần mềm của bạn có một số loại sự kiên trì xảy ra (hệ thống tệp cơ sở dữ liệu?); bạn có thể sử dụng cùng một cơ chế kiên trì đó để lưu trữ trạng thái đăng ký.

Tất nhiên, mọi người có thể truy cập vào bất kỳ nội dung nào mà phần mềm của bạn có thể đọc/ghi có thể truy cập trái phép vào phần mềm của bạn. Vì vậy, bạn có thể mã hóa hồ sơ; thì bạn có vấn đề về quản lý khóa cho cơ chế mã hóa đó; Tuy nhiên, hiện tại không có giải pháp mạnh mẽ nào.

Vì vậy, sau đó bạn có thể có một "máy chủ cấp phép" trên internet; phần mềm của bạn có thể đọc số nhận dạng duy nhất cho máy của bạn chẳng hạn như (MAC address), gửi nó tới máy chủ cấp phép của bạn và yêu cầu máy chủ trả lại trạng thái giấy phép. Một lần nữa, điều này là khá tầm thường để phá vỡ, và bây giờ bạn đang yêu cầu người dùng của bạn để được trực tuyến để sử dụng phần mềm của bạn.

Nếu phần mềm của bạn thu hút người dùng từ xa, tin tặc sẽ phá vỡ bảo vệ khóa cấp phép trong ngày và đăng các hướng dẫn chi tiết trên internet. Apple đi đến độ dài bất thường để bảo vệ phần mềm trên Iphone/Ipad, và các ứng dụng jailbreak vẫn mở khóa chúng. Theo quan điểm của tôi, trừ khi phần mềm của bạn có giá trị doanh thu hàng chục triệu đô la, bạn nên làm cho cuộc sống của bạn dễ dàng nhất có thể cho người dùng của bạn và không lo lắng quá nhiều về khía cạnh bảo mật - sử dụng thứ gì đó trên kệ (như @bunting khuyến cáo), hoặc giải quyết cho một tập tin văn bản.

Cụ thể, tôi sẽ:

  • kiểm tra sự hiện diện của một tập tin giấy phép hợp lệ lúc khởi động ứng dụng
  • nếu tập tin giấy phép không có mặt, yêu cầu người dùng nhập license key
  • so sánh mà với khóa cấp phép của bạn
  • ghi tệp "hợp lệ" vào hệ thống tệp, trong thư mục ứng dụng của bạn; cách khác, sửa đổi tệp cấu hình hiện có.

Điều này dễ bị phá vỡ một cách dễ dàng; để bạn có thể tiến thêm một bước nữa.

Thứ nhất, các ứng dụng Java dễ dàng dịch ngược và kẻ tấn công có thể dễ dàng đọc liên tục "giấy phép" của bạn. Bạn nên sử dụng một obfuscator để làm cho điều này khó khăn (mặc dù không phải không thể).

Thứ hai, bạn có thể mã hóa dữ liệu giấy phép cục bộ của mình; điều này cũng sẽ gây khó khăn hơn cho hacker hoàn toàn bình thường. Bạn có thể bao gồm một số dữ liệu cục bộ trong lược đồ mã hóa để tin tặc không thể phân phối lại ứng dụng của bạn bằng khóa cấp phép đang hoạt động (ví dụ: bằng cách nhân khóa cấp phép theo địa chỉ MAC của máy).

Trong cả hai trường hợp, bạn đang "cấp phép" giấy phép vào ứng dụng; có các bảng tin nơi các tin tặc đăng các khóa cấp phép cho các ứng dụng và bạn sẽ không thể trả lời khác ngoài việc phát hành phiên bản mới của ứng dụng bằng khóa mới.

+3

Hoặc thậm chí tốt hơn, một cửa sổ pop-up đơn giản nói 'Xin chào, bạn có thể sử dụng phần mềm này nhiều như bạn muốn, nhưng xin vui lòng, nếu bạn thấy nó hữu ích, hãy gửi cho tôi một số tình yêu qua Paypal'. – mcfinnigan

+0

Vâng, @mcfinnigan, điều đó sẽ tốt hơn - mặc dù tôi cho rằng đó là sự bất tiện - "nagware" rất nhanh chóng biến mất khỏi máy tính của tôi ... –

+0

được cấp. Các nagware đẹp hơn nags chỉ một lần :) Nhưng có, tôi thấy quan điểm của bạn. – mcfinnigan

3

Dường như bạn đang cố gắng xây dựng giấy phép cho phần mềm của mình. Bạn đã xem xét sử dụng một thư viện cho điều này hơn là làm nó bằng tay? Có lẽ có một cái nhìn tại True License, nó nên làm những gì bạn cần.

+0

Cảm ơn rất nhiều cho bunting trả lời, tôi thực sự đánh giá cao nó. Dù sao, điều này là miễn phí? (vì nó nói "ứng dụng đồng bộ hóa tệp TrueMirror có sẵn cho thời gian dùng thử miễn phí tại http://truemirror.schlichtherle.de/en/".) –

+0

Xem trang cấp phép: http://truelicense.java.net/license .html –

+0

Cảm ơn rất nhiều bunting :) Tôi thực sự đánh giá cao nó :) –

6

Tôi ngạc nhiên một khả năng đã bị bỏ qua. Cách dễ nhất để bảo vệ dữ liệu từ một khách hàng không đáng tin cậy là không bao giờ để cho khách hàng có nó. Một số kiến ​​trúc ứng dụng cho phép điều này: một ứng dụng web, một máy khách desktop RPC'ing đến một máy chủ từ xa, hoặc một máy khách mỏng hiệu năng cao kết nối với một máy tính để bàn ảo trên một máy chủ từ xa. Các ứng dụng web đã phổ biến do lợi thế của chúng trong lĩnh vực cài đặt, sao lưu dữ liệu và bảo trì.

Vì vậy, thay vì cố gắng để có được một danh dự Comp Sci Tiến sĩ bằng cách làm cho phần mềm thực thi một chính sách bảo mật của công ty trên một client ác ...

(rất khó)

... bạn chỉ cần đặt tài sản trí tuệ trên một máy chủ đáng tin cậy và máy khách chỉ có giao diện người dùng (và logic không bí mật). Chiến lược này có của riêng gotcha. Đó là hồ sơ theo dõi là cách tốt hơn so với bảo vệ bản sao của khách hàng, mặc dù.

Lưu ý: Tiền thưởng là bạn nhận được luồng doanh thu ổn định để "quản lý" phần mềm cho khách hàng của mình.