我有應用。我知道所有的網址,參數,http請求類型等(這是我的應用程序)。攔截Android應用發送的HTTP請求
如何攔截來自應用程序的所有請求?例如 - 我按了一個按鈕,可以看到服務器的請求文本。
任務 - 隱藏潛在黑客的請求,並阻止他代表應用程序執行請求。
我有應用。我知道所有的網址,參數,http請求類型等(這是我的應用程序)。攔截Android應用發送的HTTP請求
如何攔截來自應用程序的所有請求?例如 - 我按了一個按鈕,可以看到服務器的請求文本。
任務 - 隱藏潛在黑客的請求,並阻止他代表應用程序執行請求。
據我瞭解,你的問題包括兩個問題:
如何檢查你的服務器和客戶機之間的流量。
有幾種可能性隨着努力:
如何確保只有您的客戶可以向服務器發出請求。 我會建議使用https與客戶端身份驗證。您將不得不與您的應用一起推出客戶端證書,然後您的服務器可能會檢查客戶端的真實性。 Here您可以找到相互ssl身份驗證的一般介紹。
你並沒有真正澄清爲什麼你是在你的問題中這樣做,但對於其他人:想要這樣做的最好的動機是因爲你害怕你的應用程序是攻擊者的目標因爲他們以某種方式強迫你的意圖(或其他RPC界面)行爲不端。
我可以說這樣做的最好方式是爲您的應用程序提供一個儘可能有限的接口:不允許面向公衆的意圖或RPC接口操縱應用程序發送您不想要的信息。
此外,您可以通過HTTP應用程序中的封裝程序(可能是HTTP應用程序)發送到服務器。問題是,一旦你的信息記錄在客戶端的設備上,你打算用做。能夠正確識別應用何時「做壞」的事情幾乎是不可能的,並且預先定義了什麼是「壞」,所以這是錯誤的追求。
因此,即使您可以登錄,並且即使您可以使用HTTPS,我也會說您應該調查攻擊者可以用來操縱應用程序以將數據發送到Web服務的所有途徑:開始位置你實際上發送數據,並通過應用程序後退工作!
擴展WebViewClient
,我推翻方法shouldOverrideUrlLoading
如下:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
String mainPage = "https://www.secureSite.com/myData/";
if (url.startsWith(mainPage)) {
view.loadUrl(url);
return false;
} else {
//some dialog building code here
view.stopLoading();
return false;
}
} // end-of-method shouldOverrideUrlLoading
所以這段代碼的一點是,它評估您的應用程序開始加載每個URL。如果用戶找到鏈接或嘗試加載不屬於您的網域/指定網址的自己的網址,那麼它將不會匹配,也不會加載。
但是在您的android清單中,您應該將android:exported
屬性設置爲false
以防止其他應用程序使用它。下面
報價從here:
安卓出口 無論其他應用程序的組件可以調用該服務或者與其進行交互 - 如果他們能做到「真」和「假」如果不。當值爲「false」時,只有具有相同用戶ID的相同應用程序或應用程序的組件才能啓動該服務或綁定到該服務。
默認值取決於服務是否包含意圖過濾器。沒有任何過濾器意味着它只能通過指定其確切的類名來調用。這意味着服務僅用於應用程序內部使用(因爲其他人不知道類名)。所以在這種情況下,默認值是「false」。另一方面,至少存在一個過濾器意味着該服務將用於外部使用,因此默認值爲「true」。
此屬性不是限制將服務暴露給其他應用程序的唯一方法。您還可以使用權限來限制可以與服務交互的外部實體(請參閱權限屬性)。
該屬性也可用於Activity
和Provider
。 (活動)和here(提供者)是參考文獻,但與Service
說明相同,但與Service
相同,只是用Activity
或Provider
代替Service
。
我建議使用https或其他加密技術來隱藏潛在黑客的隱藏請求。 –
是的,我知道https – monyag