2013-03-12 79 views
3

所以我剛剛與Android的UrbanAirship集成。在.properties文件中存儲密鑰是不好的做法

他們的示例代碼使用.properties文件來存儲API密鑰和祕密。我發現這非常令人擔憂,因爲這些文件在擴展APK之後可以輕鬆訪問。

我不打算就你的應用中存儲敏感數據展開辯論。我只想知道存儲這樣的密鑰是否是不可接受的。

如果是的話那哪一種更安全但直接的方法?我目前將我自己的API密鑰作爲靜態變量存儲在全局文件中。

回答

2

由於APK內容未經過加密,因此該字符串與.properties文件中的字符串相比,是從編譯的類中輕鬆提取的。您可以通過在您的Globals課程中存儲加密文件來使其更難以提取,但不要指望您發送給用戶的任何內容保持祕密。

0

如果您需要安全的方式將密鑰加載到內存中,請在運行時通過安全通道從您自己的服務器請求它們。即使您將密鑰存儲在只能從您的程序訪問的共享首選項/數據庫中,根源設備也可以解決此問題,因爲它可以訪問所有文件。 Class/Dex文件可以在任何時候進行反向設計。

也看看像dexguard工具。它比proguard提供更多的混淆,安全功能。

0

關於城市飛艇;放置在.properties文件中的關鍵和祕密本質上是用於分析調用,而不是實際的「推送」。儘管您也有API調用的主祕密。這是您需要保護的應用程序祕密值。這就是爲什麼Urban Airship不鼓勵推出需要應用密鑰和主密鑰的設備。如果您僅存儲Urban Airship的應用密鑰和祕密,則不存在安全問題。