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.
javascript
android
webview
google-play
google-play-console
Sarath Kumar
la source
la source
Réponses:
Ce problème fait référence à une ancienne vulnérabilité de jquery de votre fichier res / raw / jquery_min.js.
Je viens de mettre à jour jquery_min.js en v3.4.1 et de le corriger.
Vous pouvez le corriger manuellement dans votre changement de fichier dans le code:
De:
if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||
À:
if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||
J'ai trouvé cette solution sur https://www.privacy-wise.com/mitigating-cve-2019-11358-in-old-versions-of-jquery/ et j'ai travaillé pour moi.
la source
(*) mais je ne sais pas comment Google trouve le fichier jquery dans apk a une vulnérabilité et a été corrigé ... doit tester (**)
2/1/2020 mis à jour: utiliser le fichier corrigé de la méthode 2 ci-dessus ne peut pas éviter la vérification des alertes Google. Supprime la première ligne de commentaire
à l'intérieur de jquery-2.2.4.min.js (et je renomme également jquery-patched.2.2.4.min.js) semble avoir fonctionné dans ma nouvelle version. (et cela a fonctionné même sur le fichier non corrigé dans mon test, il vaut mieux faire un patch)
la source
Notification de sécurité
Votre application contient une ou plusieurs bibliothèques qui ont des problèmes de sécurité généraux. Veuillez consulter cet article du centre d'aide Google pour plus de détails.
Bibliothèque JavaScript vulnérable:
Problème: j'ai utilisé jquery version 3.4.1 et cela a un effet sur l'apparence de mon application, par exemple dans le thème d'affichage, l'icône de l'application n'est pas visible et devient salissante
correct ... J'ai changé l'avertissement de sécurité de la version 3.4.1 de Google résolu mais, l'icône de l'application n'est pas visible et devient en désordre
la source