Lansiran Keamanan Google Play Store Mengatakan bahwa aplikasi Anda berisi pustaka JavaScript yang Rentan bagaimana cara menghapus peringatan keamanan?


13

Di Google Play Store saya mendapat peringatan di bawah seperti ini,

Aplikasi Anda berisi satu atau lebih perpustakaan dengan masalah keamanan yang diketahui. Silakan lihat ini artikel Pusat Bantuan Google ini untuk detailnya.

Pustaka JavaScript yang rentan:

  • Nama -> jquery
  • Versi -> 3.3.1
  • Masalah yang diketahui -> SNYK-JS-JQUERY-174006
  • File yang diidentifikasi -> res / raw / jquery_min.js

Catatan: saat memuat tampilan web di aplikasi saya, saya akan InterceptRequest dalam url tampilan web dan memuat file jquery_min.js lokal dari sumber daya folder mentah yang membantu kami memuat laman web lebih cepat karena fungsi ini dan saya menghemat 5 gb unduhan dari server per bulan.

masukkan deskripsi gambar di sini

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

Kelas untuk Memuat skrip lokal

 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. Jika saya memperbarui baru ke skrip Jquery apakah google play akan menghapus Peringatan Keamanan (Pustaka JavaScript yang Rentan)?
  2. Jika saya menempatkan skrip Jquery di tempat lain di aplikasi saya apakah google play akan menghapus Peringatan Keamanan?
  3. Beri tahu saya cara efisien memuat skrip di webview tanpa memuat setiap kali dari server.

Anda mungkin dapat mengunduh skrip dari cloud bucket (mungkin Firebase) dan kemudian menggunakannya. Dengan melakukannya, Play Console tidak akan menemukan kerentanan apa pun di aplikasi Anda.
Shubham Panchal

Jawaban:


12

Masalah ini merujuk pada kerentanan lama jquery dari file res / raw / jquery_min.js Anda.

Baru saja memperbarui jquery_min.js ke v3.4.1 dan memperbaikinya.

Anda dapat memperbaikinya secara manual dalam perubahan file dalam kode:

Dari:

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

Untuk:

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

Saya menemukan solusi ini di https://www.privacy-wise.com/mitigating-cve-2019-11358-in-old-versions-of-jquery/ dan bekerja untuk saya.


1
  1. menggunakan jquery v3.4.0 + terbaru
  2. jika jquery v1.x / v2.x lama harus digunakan karena kode Anda atau ketergantungan perpustakaan pihak ketiga (seperti jquery mobile etcs), Anda dapat mengambil tambalan dari snyk-js-jquery-174006 milik DanielRuf (*)

(*) tapi saya tidak yakin bagaimana Google menemukan file jquery di apk memiliki kerentanan dan telah ditambal ... perlu diuji (**)

2/1/2020 diperbarui: gunakan metode di atas 2 file yang ditambal tidak dapat menghindari pemeriksaan lansiran Google. Menghapus baris komentar pertama

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

di dalam jquery-2.2.4.min.js (dan saya juga mengganti nama menjadi jquery-patched.2.2.4.min.js) tampaknya berfungsi di rilis baru saya. (dan ini bekerja bahkan pada file yang belum ditambal dalam pengujian saya, lebih baik membuat patch)


Terima kasih, hanya menghapus komentar versi jQuery dari file .js.
Andrew Lim

0

Pemberitahuan keamanan

Aplikasi Anda mengandung satu atau lebih perpustakaan yang memiliki masalah keamanan umum. Silakan lihat artikel Pusat Bantuan Google ini untuk detailnya.

Pustaka JavaScript yang rentan:

Nama Versi Masalah yang diketahui File jquery yang teridentifikasi 2.2.4 SNYK-npm: jquery: 20150627 SNYK-JS-JQUERY-174006 aset / jquery-2.2.4.min.js Mempengaruhi APK versi 9.

Masalah: Saya telah menggunakan jquery versi 3.4.1 dan memiliki efek pada penampilan aplikasi saya, misalnya dalam tema tampilan, ikon aplikasi tidak terlihat dan menjadi berantakan

benar ... Saya mengubah versi 3.4.1 peringatan keamanan dari Google diselesaikan tetapi, ikon aplikasi tidak terlihat dan menjadi berantakan

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.