Попередження про безпеку магазину Google Play говорить про те, що ваш додаток містить вразливі бібліотеки JavaScript, як видалити попередження про безпеку?


13

У магазині Google Play я отримую попередження нижче, як це,

У вашому додатку є одна або кілька бібліотек з відомими проблемами безпеки. Докладнішу інформацію див. У цій статті довідкового центру Google .

Уразливі бібліотеки JavaScript:

  • Назва -> jquery
  • Версія -> 3.3.1
  • Відомі проблеми -> SNYK-JS-JQUERY-174006
  • Ідентифіковані файли -> res / raw / jquery_min.js

Примітка. Під час завантаження веб-перегляду в моєму додатку я перехоплюватиму URL-адресу в 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 play відключити попередження безпеки (вразливі бібліотеки JavaScript)?
  2. Якщо я розміщую скрипт Jquery десь в моєму додатку, програма Google буде відтворювати видалення попередження про безпеку?
  3. Дайте мені знати, який ефективний спосіб завантаження сценарію у веб-перегляд, не завантажуючи кожного разу з сервера.

Можливо, ви можете завантажити сценарії з хмарного відра (можливо, Firebase), а потім використовувати їх. Роблячи це, консоль Play не знайде вразливості у вашому додатку.
Шубхем Панчал

Відповіді:


12

Ця проблема стосується старої вразливості jquery з вашого файлу res / raw / jquery_min.js.

Щойно оновив jquery_min.js до v3.4.1 і виправив його.

Ви можете виправити це вручну, змінивши файл у коді:

Від:

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, оскільки ваші коди або залежність від сторонніх бібліотек (наприклад, jquery mobile etcs), ви можете взяти виправлення з snyk-js-jquery-174006 DanielRuf (*)

(*), але я не впевнений, як Google знаходить, що файл jquery в apk має вразливість і був виправлений ... потрібно перевірити (**)

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.4.min.js), здається, працював у моєму новому випуску. (і це працювало навіть на непаттермізованому файлі в моєму тесті, краще зробити патч)


Дякуємо, видаливши коментар до версії jQuery з файлу .js - все, що було потрібно.
Андрій Лім

0

Повідомлення про безпеку

У вашій програмі є одна або кілька бібліотек, які мають загальні проблеми безпеки. Докладнішу інформацію див. У цій статті довідкового центру Google.

Вразлива бібліотека JavaScript:

Назва версії Відома проблема Ідентифікований файл jquery 2.2.4 SNYK-npm: jquery: 20150627 SNYK-JS-JQUERY-174006 активи / jquery-2.2.4.min.js Впливає на APK версії 9.

Проблема: я використовував jquery версії 3.4.1, і це впливає на зовнішній вигляд моєї програми, наприклад у темі відображення, значок програми не видно і стає брудним

Правильно ... Я змінив попередження щодо безпеки версії 3.4.1 від Google, але піктограма програми не видно і стає брудною

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.