Новое предупреждение о безопасности в Google Play Store для JavaScript, используемого библиотеками - PullRequest
0 голосов
/ 18 октября 2019

новое оповещение консоли Google Play, которое всплывало для многих пользователей.

issue code: SNYK-JS-JQUERY-174006
vulnerable jquery 3.1.1 version 
file: assets/www/js/jquery.min.js

в отличие от этого сообщения Я не указываю ни одну версию JS, но у меня есть JS с включенным WebViewв приложении.

Есть ли способ решить эту проблему?

Обновление:

согласно запросу, вот мой код webview. Однако, как я уже упоминал в комментарии, я не использую jQuery. и подозревая, что одна из зависимостей (библиотек) использует его. но я не уверен, как точно определить местоположение, так как поиск по проекту *.js не дал результатов.

Мой код WebViewe:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    String ua = "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31";

    view = inflater.inflate(R.layout.fragment_a, container, false);

    _wvAGate = view.findViewById(R.id.wvA);
    setDesktopMode(_wvAGate, true);
    _wvAGate.getSettings().setJavaScriptEnabled(true);
    WebSettings ws = _wvAGate.getSettings();
    ws.setJavaScriptEnabled(true);
    ws.setAllowFileAccess(true);
    ws.setBuiltInZoomControls(true);
    ws.setDisplayZoomControls(false);

    try {
        Timber.d("Enabling HTML5-Features");
        Method m1 = WebSettings.class.getMethod("setDomStorageEnabled", new Class[]{Boolean.TYPE});
        m1.invoke(ws, Boolean.TRUE);

        Method m2 = WebSettings.class.getMethod("setDatabaseEnabled", new Class[]{Boolean.TYPE});
        m2.invoke(ws, Boolean.TRUE);

        Method m3 = WebSettings.class.getMethod("setDatabasePath", new Class[]{String.class});
        m3.invoke(ws, "/data/data/" + getActivity().getPackageName() + "/databases/");

        Method m4 = WebSettings.class.getMethod("setAppCacheMaxSize", new Class[]{Long.TYPE});
        m4.invoke(ws, 1024 * 1024 * 8);

        Method m5 = WebSettings.class.getMethod("setAppCachePath", new Class[]{String.class});
        m5.invoke(ws, "/data/data/" + getActivity().getPackageName() + "/cache/");

        Method m6 = WebSettings.class.getMethod("setAppCacheEnabled", new Class[]{Boolean.TYPE});
        m6.invoke(ws, Boolean.TRUE);
    }  catch (Exception e){
        Timber.e("AGate exception",e);
    }

    _wvAGate.getSettings().setUserAgentString(ua);
    _wvAGate.getSettings().setUseWideViewPort(true);
    _wvAGate.getSettings().setLoadWithOverviewMode(true);


    _wvAGate.setWebChromeClient(new WebChromeClient() {
        @Override
        public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
            return super.onConsoleMessage(consoleMessage);
        }
    });

    _wvAGate.setWebViewClient(new WebViewClient() {
        @SuppressLint("NewApi")
        @Override
        public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
            return null;
        }
    });
    _wvAGate.addJavascriptInterface(new WebAppInterface(getActivity()), "Gate");
}
public void setDesktopMode(WebView webView, boolean enabled) {
    String newUserAgent = webView.getSettings().getUserAgentString();
    if (enabled) {
        try {
            String ua = webView.getSettings().getUserAgentString();
            String androidOSString = webView.getSettings().getUserAgentString().substring(ua.indexOf("("), ua.indexOf(")") + 1);
            newUserAgent = webView.getSettings().getUserAgentString().replace(androidOSString, "(X11; Linux x86_64)");
        } catch (Exception e) {
            e.printStackTrace();
        }
    } else {
        newUserAgent = null;
    }

    webView.getSettings().setUserAgentString(newUserAgent);
    webView.getSettings().setUseWideViewPort(enabled);
    webView.getSettings().setLoadWithOverviewMode(enabled);
    webView.reload();
}

Я бы хотелСпасибо, если у вас есть какие-либо решения по этой проблеме.

ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...