Google Play Store Security Alert कहता है कि आपके ऐप में कमजोर जावास्क्रिप्ट लाइब्रेरी हैं, सुरक्षा चेतावनी कैसे हटाएं?


13

Google Play Store में इस तरह नीचे चेतावनी दी जा रही है,

आपके ऐप में एक या अधिक लाइब्रेरियाँ हैं जिनमें ज्ञात सुरक्षा समस्याएँ हैं। कृपया विवरण के लिए यह Google सहायता केंद्र लेख देखें।

कमजोर जावास्क्रिप्ट पुस्तकालयों:

  • नाम -> jquery
  • संस्करण -> 3.3.1
  • ज्ञात मुद्दे -> SNYK-JS-JQUERY-174006
  • पहचानी गई फाइलें -> Res / raw / jquery_min.js

ध्यान दें: जब मेरे ऐप में वेब लोडिंग होती है तो मैं वेबव्यू url में इंटरसेप्ट रीप्लेस्ट को लोड करूंगा और स्थानीय jquery_min.js फ़ाइल को कच्चे फ़ोल्डर संसाधन से लोड करूंगा जो हमें इस फ़ंक्शन के कारण वेबपेज को तेजी से लोड करने में मदद करता है और मैं प्रति माह सर्वर से 5 जीबी डाउनलोड बचाता हूं।

यहां छवि विवरण दर्ज करें

नमूना 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);

स्थानीय स्क्रिप्ट लोड करने के लिए कक्षा

 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 स्क्रिप्ट के लिए नया अपडेट करूंगा तो क्या Google सुरक्षा सुरक्षा चेतावनी (कमजोर जावास्क्रिप्ट लाइब्रेरी) को हटा देगा?
  2. अगर मैं अपने ऐप में Jquery स्क्रिप्ट को कहीं और रख दूंगा तो क्या Google Play सिक्योरिटी अलर्ट को हटा देगा?
  3. मुझे पता है कि सर्वर से हर बार लोड किए बिना स्क्रिप्ट को वेबव्यू में लोड करने का कुशल तरीका क्या है।

आप संभवतः क्लाउड बकेट (शायद फायरबेस) से स्क्रिप्ट डाउनलोड कर सकते हैं और फिर उनका उपयोग कर सकते हैं। ऐसा करने से, Play Console को आपके ऐप में कोई भेद्यता नहीं मिलेगी।
शुभम पांचाल

जवाबों:


12

यह समस्या आपके रेस / कच्चे / jquery_min.js फ़ाइल से jquery की पुरानी भेद्यता को संदर्भित करती है।

बस v3.4.1 को jquery_min.js को अपडेट किया और इसे ठीक किया।

आप इसे कोड में अपनी फ़ाइल में मैन्युअल रूप से ठीक कर सकते हैं:

से:

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

मुझे इसका समाधान https://www.privacy-wise.com/mitigating-cve-2019-11358-in-old-versions-of-jquery/ में मिला और मेरे लिए काम किया।


1
  1. नवीनतम jquery v3.4.0 + का उपयोग करता है
  2. यदि पुराने jquery v1.x / v2.x का उपयोग किया जाना चाहिए क्योंकि आपके कोड या 3 पार्टी लाइब्रेरी निर्भरता (जैसे jquery मोबाइल आदि), तो आप DanielRuf के snyk-js-jsery-174006 (*) से एक पैच ले सकते हैं

(*) लेकिन मुझे यकीन नहीं है कि Google को कैसे पता चलता है कि एपीके में jquery फ़ाइल में भेद्यता है और पैच किया गया है ... परीक्षण करने की आवश्यकता है (**)

2/1/2020 अपडेट किया गया: उपरोक्त विधि 2 पैच फ़ाइल Google अलर्ट जाँच से बच नहीं सकती है। पहली टिप्पणी लाइन निकालता है

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

jquery-2.2.4.min.js के अंदर (और मैं jquery-patched.2.2.2.4.min.js का भी नाम लेता हूं) लगता है कि मेरी नई रिलीज़ में काम किया गया है। (और यह भी मेरे परीक्षण में अप्रकाशित फ़ाइल पर काम किया, यह बेहतर रूप से एक पैच बनाना चाहिए)


धन्यवाद, .js फ़ाइल से jQuery संस्करण टिप्पणी को हटाने के लिए यह सब लिया गया था।
एंड्रयू ली

0

सुरक्षा सूचना

आपके आवेदन में एक या एक से अधिक लाइब्रेरी हैं जिनमें सामान्य सुरक्षा मुद्दे हैं। कृपया विवरण के लिए यह Google सहायता केंद्र लेख देखें।

कमजोर जावास्क्रिप्ट पुस्तकालय:

संस्करण का नाम ज्ञात समस्या फ़ाइल की पहचान jquery 2.2.4 SNYK-npm: jquery: 20150627 SNYK-JS-JQUERY-174006 संपत्ति / jquery-2.2.4.min.js संस्करण 9 को प्रभावित करता है।

समस्या: मैंने jquery संस्करण 3.4.1 का उपयोग किया है और इसका मेरे आवेदन की उपस्थिति पर प्रभाव पड़ता है, उदाहरण के लिए डिस्प्ले थीम में, एप्लिकेशन आइकन दिखाई नहीं देता है और गड़बड़ हो जाता है

सही ... मैंने Google से संस्करण 3.4.1 सुरक्षा चेतावनी को बदल दिया है लेकिन, एप्लिकेशन आइकन दिखाई नहीं देता है और गड़बड़ हो जाता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.