2017-03-06 94 views
1

我確實有一個問題困擾着我。每當您使用Google API等Firebase數據庫時,您都會在創建時告訴Endpoint允許使用的應用程序的程序包名稱,以及您用於簽署應用程序的證書的指紋。 現在,當您嘗試使用其他應用程序(不同軟件包名稱)的API或更改簽名證書(例如從調試切換到發佈)時,Google會拒絕該通話。驗證自定義API上的簽名證書指紋電話

這讓我想到了。 Google如何在運行時知道簽名證書指紋?

我們可以通過檢查指紋來使用相同的機制來保護自定義API端點嗎?獲取包名很簡單,沒有什麼可依賴的,但我對證書指紋感興趣。

我的目標是驗證服務器上的請求,而不是使用參數+ salt和潛在時間戳的散列值。

+0

你把你的應用程序的證書指紋的火力點安慰自己,他們只是做了比較。 –

+0

@HristoStoyanov與什麼比較? API何時以及如何將指紋與請求一起發送?顯然,指紋在服務器上進行比較,但客戶端的指紋如何到達服務器? – grAPPfruit

回答

0

我做了一些關於該主題的更多研究。事實證明,你可以在運行時訪問簽名證書,像這樣:

Signature[] sigs = context.getPackageManager().getPackageInfo(context.getPackageName(),PackageManager.GET_SIGNATURES).signatures; 
for (Signature sig : sigs) { 
    Log.i("App", "Signature : " + sig.hashCode()); 
} 

found here