Google Play Store-Sicherheitswarnung Gibt an, dass Ihre App anfällige JavaScript-Bibliotheken enthält. Wie kann die Sicherheitswarnung entfernt werden?


13

Im Google Play Store wird unten eine Warnung angezeigt:

Ihre App enthält eine oder mehrere Bibliotheken mit bekannten Sicherheitsproblemen. Weitere Informationen finden Sie in diesem Artikel in der Google-Hilfe .

Anfällige JavaScript-Bibliotheken:

  • Name -> Abfrage
  • Version -> 3.3.1
  • Bekannte Probleme -> SNYK-JS-JQUERY-174006
  • Identifizierte Dateien -> res / raw / jquery_min.js

Hinweis: Wenn ich Webview in meine App lade, lade ich InterceptRequest in der Webview-URL und lade die lokale Datei jquery_min.js aus der Rohordnerressource, wodurch wir die Webseite aufgrund dieser Funktion schneller laden können. Außerdem spare ich 5 GB Download vom Server pro Monat.

Geben Sie hier die Bildbeschreibung ein

Beispiel für ein WebView-Programm

    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);

Klasse zum Laden lokaler Skripte

 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. Wenn ich ein neues Jquery-Skript aktualisiere, entfernt Google Play dann den Sicherheitsalarm (gefährdete JavaScript-Bibliotheken)?
  2. Wenn ich das Jquery-Skript an einer anderen Stelle in meiner App platziere, entfernt Google Play dann den Sicherheitsalarm?
  3. Lassen Sie mich wissen, wie das Skript in der Webansicht effizient geladen werden kann, ohne jedes Mal vom Server geladen zu werden.

Sie könnten die Skripte wahrscheinlich aus einem Cloud-Bucket (möglicherweise Firebase) herunterladen und dann verwenden. Auf diese Weise findet die Play Console keine Schwachstellen in Ihrer App.
Shubham Panchal

Antworten:


12

Dieses Problem bezieht sich auf eine alte Sicherheitsanfälligkeit von jquery aus Ihrer Datei res / raw / jquery_min.js.

Aktualisieren Sie einfach die Datei jquery_min.js auf Version 3.4.1 und beheben Sie sie.

Sie können es manuell in Ihrer Datei ändern, indem Sie den Code ändern:

Von:

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

Zu:

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

Ich habe diese Lösung unter https://www.privacy-wise.com/mitigating-cve-2019-11358-in-old-versions-of-jquery/ gefunden und für mich gearbeitet.


1
  1. verwendet die neueste jquery v3.4.0 +
  2. Wenn die alte jquery v1.x / v2.x verwendet werden muss, weil Ihre Codes oder die Abhängigkeit von Bibliotheken von Drittanbietern (wie jquery mobile etcs), können Sie einen Patch von DanielRufs snyk-js-jquery-174006 (*) übernehmen.

(*) aber ich bin nicht sicher, wie Google findet, dass die jquery-Datei in apk verwundbar ist und gepatcht wurde ... muss getestet werden (**)

01.02.2020 aktualisiert: Die Verwendung der oben genannten gepatchten Datei nach Methode 2 kann die Überprüfung der Google-Warnmeldungen nicht vermeiden. Entfernt die erste Kommentarzeile

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

in der jquery-2.2.4.min.js (und ich benenne sie auch in jquery-patched.2.2.4.min.js um) scheint in meiner neuen Version funktioniert zu haben. (und dies funktionierte sogar bei der nicht gepatchten Datei in meinem Test, es sollte besser einen Patch machen)


Vielen Dank, das Entfernen des Kommentars zur jQuery-Version aus der .js-Datei war alles, was es brauchte.
Andrew Lim

0

Sicherheitsbenachrichtigung

Ihre Anwendung enthält eine oder mehrere Bibliotheken mit allgemeinen Sicherheitsproblemen. Weitere Informationen finden Sie in diesem Artikel in der Google-Hilfe.

Anfällige JavaScript-Bibliothek:

Versionsname Bekanntes Problem Datei identifiziert jquery 2.2.4 SNYK-npm: jquery: 20150627 SNYK-JS-JQUERY-174006 Assets / jquery-2.2.4.min.js Betrifft APK Version 9.

Problem: Ich habe jquery Version 3.4.1 verwendet und es wirkt sich auf das Erscheinungsbild meiner Anwendung aus, z. B. im Anzeigethema, das Anwendungssymbol ist nicht sichtbar und wird unübersichtlich

Richtig ... Ich habe die Sicherheitswarnung von Version 3.4.1 von Google geändert, aber das Anwendungssymbol ist nicht sichtbar und wird unordentlich

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.