在用戶輸入他/她的許可證密鑰後,我的應用程序使用該密鑰激活自己(在線)。如何存儲此激活狀態和許可證密鑰,以便下次用戶打開應用程序時,應用程序會知道它已被激活?我的Cocoa應用程序應該如何存儲用戶的許可證密鑰?
回答
我只是寫了用戶許可證密鑰,並匹配電子郵件中的「文件〜/庫/應用程序支持/爲MyApplication/License.myApplicationlicense 」。我認爲這比使用NSUserDefaults更好,因爲用戶希望能夠拋棄他們的首選項,而不必像重新註冊他們的應用程序那樣發生任何戲劇性的事情。
該文件只是使用writeToFile編寫的NSDictionary的內容:atomically:並使用dictionaryWithContentsOfFile:讀取。內容未加密,但取決於許可證方案的工作方式,這通常並不重要。
我也建議你看看AquaticPrime如果你還沒有這樣做。我決定推出自己的許可證方案,因爲我想要許可證代碼而不是許可證文件。最後我覺得我會堅持AquaticPrime,這比我自己的許可證方案更加安全得多。當我在測試期間使用AquaticPrime時,我將許可證文件存儲在上述相同位置。
您可以使用NSUserDefaults或您自己設計的系統。
我建議使鑰匙依賴於用戶特定的事情,例如電子郵件或全名,或者如果有必要的話可能是機器特定的ID。然後,您可以將其存儲在NSUserDefaults或用戶主目錄中名爲的簡單點。這不需要加密它或做一些瘋狂的混淆。我們相信這是一些永遠不會支付任何東西的人,所以你實際上並沒有放任何東西。通過使關鍵取決於用戶特定的事情使得用戶更難分享它。
關於盜版。你覺得他們可以走多遠?我製作了一個小工具,無需付任何費用就能正常工作。但作爲對那些願意支持創建它的人的一種享受,我添加了一個小功能,只需5美元即可更改其中的圖形顏色。那麼,他們做了什麼?有人實際上扭轉了這個關鍵,他們創造了一個keymaker。我承認我沒有花費太多精力來混淆算法,但是,嘿,我更專注於讓所有真正的好用戶都能輕鬆輸入,而不是爲任何破解者拼命工作。我更高興的是他們認爲我的小應用程序值得爲逆向工程的努力付出努力。
鏈接:
蘋果公司爲這種需求提供了全面的設施。你想要的是鑰匙串API。
+1這是正確的答案。任何敏感數據都應存儲在鑰匙串中。我會將用戶許可證密鑰稱爲「敏感」,因爲如果它們丟失了,它就消失了。 – 2009-12-27 02:23:53
但我從未見過任何軟件應用程序將其許可證密鑰存儲在鑰匙串中。如果用戶丟失許可密鑰,他們應該將其保存在他們的電子郵件中,或者他們應該能夠聯繫客戶支持。即使鑰匙串數據可能會丟失,與用戶主文件夾中的數據相同。 – Chetan 2009-12-27 18:36:24
- 1. 我的OSX應用程序應該如何存儲用戶的私鑰?
- 2. 我應該在哪裏存儲我的應用程序的「激活」密鑰?
- 3. 如何爲黑莓應用程序添加許可證密鑰?
- 4. 我應該在電子應用程序中存儲OAuth客戶機密鑰?
- 5. 我應該如何將API密鑰存儲在Python應用程序中?
- 6. Windows應用程序的許可證密鑰生成
- 7. VMId上Java RCP應用程序的許可證密鑰
- 8. 什麼我應該使用密鑰存儲關於應用程序?
- 9. 如何管理在硬盤上存儲加密用戶憑證的Ruby應用程序中的加密密鑰?
- 10. 在我的應用程序中存儲敏感的API密鑰
- 11. 爲WinForms應用程序併入許可證密鑰方法
- 12. 我是否應該在我的iOS或Android應用程序中硬編碼存儲加密密鑰
- 13. 我如何獲取用戶密鑰(谷歌應用程序)
- 14. 如何安全地存儲應用程序ID /密鑰?
- 15. 存儲iOS應用程序的用戶密碼和用戶名
- 16. 驗證Facebook應用程序ID和應用程序密鑰
- 17. 我應該在webapp中的spring/spring-security中存儲用戶ID密鑰?
- 18. 應用程序身份驗證密鑰
- 19. 我應該如何存儲密碼?
- 20. 用戶允許我的應用程序的許可權
- 21. 如何爲多用戶應用程序本地存儲密碼?
- 22. 我應該使用哪個許可證?
- 23. 開放源代碼/免費的C#windows應用程序許可證密鑰庫
- 24. 如何在我的Qt應用程序中存儲密碼?
- 25. 在Cocoa應用程序中安全地保存用戶憑證
- 26. 在iPhone應用程序的代碼中存儲OAuth密鑰
- 27. 存儲Rails應用程序的共享密鑰
- 28. 使CakePHP應用程序的許可證?
- 29. 存儲密碼的應用程序
- 30. 對於多個應用程序使用相同的密鑰存儲可以嗎?
這正是我所做的,除了我用NSKeyedArchiver編碼數據而不是NSDictionary。它增加了額外的安全級別。 至於AquaticPrime,請參閱: http://toxicsoftware.com/aquaticprime-warning/ – Chetan 2009-12-27 01:33:10
應該指出的是,這裏描述的是對軟件的二進制破解。因爲即使iPhone應用程序加密已被破解,對二進制破解的防範仍然沒有人解決。 所以你需要決定你想要完成什麼。我建議你想保持誠實的人誠實,並有一個許可證密鑰生成系統,將讓某人從你自己的應用程序製作自己的許可證生成器。 AquaticPrime通過一些注意事項來完成此操作。您應該編譯代碼並混淆公鑰和方法。 – 2009-12-27 02:21:41