Avviso di sicurezza del Google Play Store Dice che la tua app contiene librerie JavaScript vulnerabili come rimuovere l'avviso di sicurezza?


13

Nel Google Play Store ricevo un avviso di seguito come questo,

L'app contiene una o più librerie con problemi di sicurezza noti. Consulta questo articolo del Centro assistenza di Google per i dettagli.

Librerie JavaScript vulnerabili:

  • Nome -> jquery
  • Versione -> 3.3.1
  • Problemi noti -> SNYK-JS-JQUERY-174006
  • File identificati -> res / raw / jquery_min.js

Nota: durante il caricamento di Webview nella mia app InterceptRequest nell'URL Webview e caricherò il file jquery_min.js locale dalla risorsa della cartella non elaborata che ci aiuta a caricare la pagina Web più velocemente grazie a questa funzione e risparmio 5 GB di download dal server al mese.

inserisci qui la descrizione dell'immagine

Esempio di programma 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 per il caricamento di script locali

 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);
    }
}
  1. Se aggiorno il nuovo script Jquery, Google Play rimuoverà Avviso di sicurezza (librerie JavaScript vulnerabili)?
  2. Se inserisco lo script Jquery da qualche altra parte nella mia app, Google Play rimuoverà Avviso di sicurezza?
  3. Fammi sapere qual è il modo efficiente di caricare lo script in Webview senza caricarlo ogni volta dal server.

Probabilmente potresti scaricare gli script da un cloud bucket (forse Firebase) e poi usarli. In questo modo, la Play Console non troverà alcuna vulnerabilità nella tua app.
Shubham Panchal,

Risposte:


12

Questo problema si riferisce a una vecchia vulnerabilità di jquery dal tuo file res / raw / jquery_min.js.

Ho appena aggiornato jquery_min.js alla v3.4.1 e riparato.

È possibile risolverlo manualmente nella modifica del file nel codice:

A partire dal:

if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||

Per:

if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||

Ho trovato questa soluzione in https://www.privacy-wise.com/mitigating-cve-2019-11358-in-old-versions-of-jquery/ e ho lavorato per me.


1
  1. utilizza l'ultimo jquery v3.4.0 +
  2. se il vecchio jquery v1.x / v2.x deve essere usato perché i tuoi codici o la dipendenza da librerie di terze parti (come jquery mobile etcs), puoi prendere una patch da snyk-js-jquery-174006 di DanielRuf (*)

(*) ma non sono sicuro di come Google abbia riscontrato la vulnerabilità del file jquery in apk e sia stato corretto ... deve essere testato (**)

01/02/2020 aggiornato: utilizzare il file patchato metodo 2 sopra non può evitare il controllo degli avvisi di Google. Rimuove la prima riga di commento

/*! jQuery v2.2.4 | (c) jQuery Foundation | jquery.org/license */

all'interno di jquery-2.2.4.min.js (e ho anche rinominato in jquery-patched.2.2.4.min.js) sembra funzionare nella mia nuova versione. (e questo ha funzionato anche sul file senza patch nel mio test, dovrebbe fare meglio una patch)


Grazie, è stato sufficiente rimuovere il commento della versione jQuery dal file .js.
Andrew Lim,

0

Notifica di sicurezza

L'applicazione contiene una o più librerie con problemi di sicurezza generali. Consulta questo articolo del Centro assistenza di Google per i dettagli.

Libreria JavaScript vulnerabile:

Nome versione Problema noto File identificato jquery 2.2.4 SNYK-npm: jquery: 20150627 SNYK-JS-JQUERY-174006 assets / jquery-2.2.4.min.js Influisce sulla versione 9 di APK.

Problema: ho usato jquery versione 3.4.1 e ha un effetto sull'aspetto della mia applicazione, ad esempio nel tema del display, l'icona dell'applicazione non è visibile e diventa disordinata

corretto ... Ho modificato la versione 3.4.1 dell'avviso di sicurezza di Google risolto ma l'icona dell'applicazione non è visibile e diventa disordinata

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.