2009-07-22 79 views
1

我在我的代碼中有一個字符串,當我與我的服務器通信時,我用它作爲祕密。加入這個字符串以確保黑客無法通過搜索我的二進制文件或在運行時查看內存找到它的最佳方法是什麼? (如果可能,以防止所有?)在ObjC/C中隱藏/加密字符串的最佳方法是什麼?

什麼是一些措施,你會建議,至少使這個儘可能difficult?

回答

2

更好的方法是監視服務器的使用情況,並嘗試檢測與您的應用程序不匹配的使用模式 - 比如知道它總是會提前一種請求,或者您通過的iPhone ID作爲一個參數調用不是從多個來源過度使用。您可以在應用程序首次啓動時進行初始呼叫,並在服務器上記錄電話ID以允許其他呼叫。

有多種方法可以解決這個問題,但它們都是基於服務器的 - 客戶端中的任何內容都可以並且會被黑客看到。客戶說的任何事情都必須被視爲謊言,有時候會是這樣。

1

從技術上講,這是不可能的,在連接之前解密之後,至少內存可以擦除代碼,因爲代碼中已經有了所需的全部解密算法。反彙編將允許直接從二進制數據解密數據。

實際上,由於這是一個封閉的平臺(根據您使用iphone標籤的事實),它只會是主要的黑客,即使它只是二進制文件中的一個純十六進制字符串,也會設法得到它。

+0

你會建議什麼樣的措施,至少使這個儘可能困難? – erotsppa 2009-07-22 15:14:51

+0

只需將字符串放在適當的位置 - 對於掃描字符串的用戶來說,這將毫無意義。然後總是使用HTTPS與您的服務器進行通信,因此無法窺探。當然,那麼你必須支付使用HTTPS的性能損失,但這是保持它的祕密的唯一方法。 – 2009-07-22 15:18:35

相關問題