Dans Google Play Store, je reçois un avertissement ci-dessous comme ceci,
Votre application contient une ou plusieurs bibliothèques présentant des problèmes de sécurité connus. Veuillez consulter cet article du centre d'aide Google pour plus de détails.
Bibliothèques JavaScript vulnérables:
- Nom -> jquery
- Version -> 3.3.1
- Problèmes connus -> SNYK-JS-JQUERY-174006
- Fichiers identifiés -> res / raw / jquery_min.js
Remarque: lors du chargement de la vue Web dans mon application, je vais intercepter la demande dans l'URL de la vue Web et charger le fichier local jquery_min.js à partir de la ressource de dossier brut, ce qui nous aide à charger la page Web plus rapidement grâce à cette fonction et j'économise 5 Go de téléchargement depuis le serveur par mois.
Exemple de programme WebView
LoadLocalScripts localScripts=new LoadLocalScripts(this);
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return true;
}
//Show loader on url load
public void onLoadResource(WebView view, String url) {
}
public void onPageFinished(WebView view, String url) {
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
}
@Override
public WebResourceResponse shouldInterceptRequest (final WebView view, String url) {
WebResourceResponse response= localScripts.getLocalSCripts(url);
if(response==null) {
return super.shouldInterceptRequest(view, url);
}else{
return response;
}
}
});
webView.loadUrl(url);
Classe de chargement de scripts locaux
public class LoadLocalScripts {
private Context ctx;
public LoadLocalScripts(Context context) {
ctx=context;
}
public WebResourceResponse getLocalSCripts(String url)
{
//Log.e("url_raw",url);
if (url.contains(".css")) {
if(url.contains("bootstrap.min.css")) {
return getCssWebResourceResponseFromRawResource("bootstrap_min.css");
}else {
return null;
}
}else if (url.contains(".js")){
if(url.contains("bootstrap.min.js")) {
return getScriptWebResourceResponseFromRawResource("bootstrap_min.js");
} else if(url.contains("jquery.lazyload.min.js")) {
return getScriptWebResourceResponseFromRawResource("lazyload_min.js");
} else{
return null;
}
} else {
return null;
}
}
/**
* Return WebResourceResponse with CSS markup from a raw resource (e.g. "raw/style.css").
*/
private WebResourceResponse getCssWebResourceResponseFromRawResource(String url) {
//Log.e("url_raw",url);
if(url.equalsIgnoreCase("bootstrap_min.css")) {
return getUtf8EncodedCssWebResourceResponse(ctx.getResources().openRawResource(R.raw.bootstrap_min));
}else {
return null;
}
}
private WebResourceResponse getScriptWebResourceResponseFromRawResource(String url) {
//Log.e("url_raw",url);
if(url.equalsIgnoreCase("bootstrap_min.js")) {
return getUtf8EncodedScriptWebResourceResponse(ctx.getResources().openRawResource(R.raw.bootstrap_min_js));
}else if(url.equalsIgnoreCase("lazyload_min.js")) {
return getUtf8EncodedScriptWebResourceResponse(ctx.getResources().openRawResource(R.raw.lazyload_min));
}else {
return null;
}
}
private WebResourceResponse getUtf8EncodedCssWebResourceResponse(InputStream data) {
return new WebResourceResponse("text/css", "UTF-8", data);
}
private WebResourceResponse getUtf8EncodedScriptWebResourceResponse(InputStream data) {
return new WebResourceResponse("text/javascript", "UTF-8", data);
}
}
- Si je mets à jour le nouveau script Jquery, Google Play supprimera-t-il l'alerte de sécurité (bibliothèques JavaScript vulnérables)?
- Si je place le script Jquery ailleurs dans mon application, Google Play supprimera-t-il l'alerte de sécurité?
- Faites-moi savoir quel est le moyen efficace de charger le script dans la vue Web sans charger à chaque fois depuis le serveur.