estensione WebViewClient
, mi escludeva il metodo shouldOverrideUrlLoading
come segue:
@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
Dunque, il punto di questo codice è che valuta ogni URL che la vostra applicazione inizia il caricamento. Se un utente trova un link o prova a caricare il proprio URL che NON fa parte del tuo dominio/URL specificato, allora non corrisponderà e non verrà caricato.
Ma nel file manifest Android, è necessario impostare l'attributo android:exported
su false
per impedire ad altre applicazioni di utilizzarlo.
Citazione seguito da here:
Android: esportato o meno componenti di altre applicazioni possono invocare il servizio o interagire con esso - "vero" se possono, e "false" altrimenti. Quando il valore è "falso", solo i componenti della stessa applicazione o delle applicazioni con lo stesso ID utente possono avviare il servizio o collegarlo ad esso.
Il valore predefinito dipende dal fatto che il servizio contenga filtri di intent. L'assenza di filtri significa che può essere invocato solo specificando il suo nome esatto della classe. Ciò implica che il servizio è inteso solo per uso interno all'applicazione (poiché altri non conoscono il nome della classe). Quindi in questo caso, il valore predefinito è "falso". D'altra parte, la presenza di almeno un filtro implica che il servizio è destinato all'uso esterno, quindi il valore predefinito è "true".
Questo attributo non è l'unico modo per limitare l'esposizione di un servizio ad altre applicazioni. È inoltre possibile utilizzare un'autorizzazione per limitare le entità esterne che possono interagire con il servizio (consultare l'attributo di autorizzazione).
Questo attributo può essere utilizzato anche in un Activity
e Provider
. Here (attività) e here (provider) è il riferimento, ma è praticamente parola per parola uguale alla descrizione Service
, basta sostituire Activity
o Provider
per Service
.
Propongo di utilizzare https o altra crittografia per nascondere richieste da potenziali hacker. –
sì, so di https – monyag