Google Play Store Güvenlik Uyarısı Uygulamanızın güvenlik uyarısı nasıl kaldırılacağı Güvenlik Açığı JavaScript kitaplıkları içerdiğini söylüyor?


13

Google Play Store'da aşağıda bu şekilde uyarı alıyorum,

Uygulamanız, bilinen güvenlik sorunları olan bir veya daha fazla kitaplık içeriyor. Ayrıntılar için lütfen bu Google Yardım Merkezi makalesine bakın.

Güvenlik açığı olan JavaScript kitaplıkları:

  • İsim -> jquery
  • Sürüm -> 3.3.1
  • Bilinen sorunlar -> SNYK-JS-JQUERY-174006
  • Tanımlanmış dosyalar -> res / raw / jquery_min.js

Not: Uygulamamda webview'i yüklerken, webview url'sinde InterceptRequest yapacağım ve bu işlev nedeniyle web sayfasını daha hızlı yüklememize yardımcı olan ham klasör kaynağından yerel jquery_min.js dosyasını yükleyeceğim ve her ay sunucudan 5 gb indirme kaydedeceğim.

resim açıklamasını buraya girin

Örnek WebView Programı

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

Yerel komut dosyalarını yüklemek için sınıf

 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. Jquery betiği için yeni güncelleme yaparsam google play Güvenlik Uyarısı'nı (Güvenlik Açığı Olan JavaScript kitaplıkları) kaldırır mı?
  2. Benim app başka bir yere Jquery komut yerleştirirseniz google play Güvenlik Uyarısı kaldırmak olacak?
  3. Sunucudan her zaman yüklemeden komut dosyasını web görünümünde yüklemenin etkili yolunun ne olduğunu bana bildirin.

Komut dosyalarını bir bulut kovasından (belki Firebase) indirebilir ve sonra kullanabilirsiniz. Bunu yaptığınızda, Play Konsolu uygulamanızda herhangi bir güvenlik açığı bulamaz.
Shubham Panchal

Yanıtlar:


12

Bu sorun, res / raw / jquery_min.js dosyanızdaki eski bir jquery güvenlik açığı anlamına gelir.

Sadece jquery_min.js dosyasını v3.4.1 olarak güncelledik ve düzeltin.

Koddaki dosya değişikliğinizde elle düzeltebilirsiniz:

Gönderen:

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

Kime:

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

Bu çözümü https://www.privacy-wise.com/mitigating-cve-2019-11358-in-old-versions-of-jquery/ adresinde buldum ve benim için çalıştım.


1
  1. en yeni jquery v3.4.0 + 'ı kullanır
  2. eski jquery v1.x / v2.x kodlarınız veya 3. taraf kitaplık bağımlılığı (jquery mobile etcs gibi) nedeniyle kullanılması gerekiyorsa, DanielRuf'un snyk-js-jquery-174006 (*) ' dan bir yama alabilirsiniz.

(*) ancak Google'ın jquery dosyasını apk'de nasıl bulduğunu bilmiyorum güvenlik açığı var ve yamalı ... test edilmesi gerekiyor (**)

01.02.2020 güncellendi: yukarıdaki yöntem 2 yamalı dosyayı kullan, Google uyarı denetiminden kaçınamaz. İlk yorum satırını kaldırır

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

jquery-2.2.4.min.js içinde (ve ayrıca jquery-patched.2.2.4.min.js olarak yeniden adlandırdım) yeni sürümümde işe yaradı. (ve bu, testimdeki eşlenmemiş dosyada bile çalıştı, bir yama yapması daha iyi olmalı)


Teşekkürler, jQuery sürüm yorumunu .js dosyasından kaldırmak için gereken tek şey buydu.
Andrew Lim

0

Güvenlik bildirimi

Uygulamanız genel güvenlik sorunları olan bir veya daha fazla kitaplık içeriyor. Ayrıntılar için lütfen bu Google Yardım Merkezi makalesine bakın.

Güvenlik Açığı Olan JavaScript kitaplığı:

Sürüm Adı Bilinen sorun Tanımlanan dosya jquery 2.2.4 SNYK-npm: jquery: 20150627 SNYK-JS-JQUERY-174006 asset / jquery-2.2.4.min.js APK sürüm 9'u etkiler.

Sorun: Jquery 3.4.1 sürümünü kullandım ve uygulamamın görünümü üzerinde bir etkisi var, örneğin ekran temasında, uygulama simgesi görünmüyor ve dağınık hale geliyor

doğru ... Google'dan sürüm 3.4.1 güvenlik uyarısını çözdüm, ancak uygulama simgesi görünmüyor ve dağınık hale geliyor

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.