В Google Play Store я получаю предупреждение ниже, как это,
Ваше приложение содержит одну или несколько библиотек с известными проблемами безопасности. Подробнее см. В этой статье Справочного центра Google .
Уязвимые библиотеки JavaScript:
- Имя -> JQuery
- Версия -> 3.3.1
- Известные проблемы -> SNYK-JS-JQUERY-174006
- Идентифицированные файлы -> res / raw / jquery_min.js
Примечание: при загрузке веб-просмотра в моем приложении я перехватываю InterceptRequest в 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);
}
}
- Если я обновлю новый скрипт Jquery, удалит ли Google Play предупреждение системы безопасности (уязвимые библиотеки JavaScript)?
- Если я размещу скрипт Jquery где-нибудь еще в своем приложении, Google Play удалит предупреждение системы безопасности?
- Дайте мне знать, каков эффективный способ загрузки скрипта в веб-браузере без постоянной загрузки с сервера.
javascript
android
webview
google-play
google-play-console
Сарат Кумар
источник
источник
Ответы:
Эта проблема связана со старой уязвимостью 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/ и работал на меня.
источник
(*) но я не уверен, как Google находит, что файл jquery в apk имеет уязвимость и был исправлен ... необходимо проверить (**)
01.02.2020 обновлено: исправленный файл с использованием вышеуказанного метода 2 не может избежать проверки оповещения Google. Удаляет первую строку комментария
внутри jquery-2.2.4.min.js (и я также переименую в jquery-patched.2.2.4.min.js), похоже, работает в моем новом выпуске. (и это работало даже на непатченном файле в моем тесте, лучше сделать патч)
источник
Уведомление о безопасности
Ваше приложение содержит одну или несколько библиотек с общими проблемами безопасности. Подробнее см. В этой статье Справочного центра Google.
Уязвимая библиотека JavaScript:
Проблема: я использовал jquery версии 3.4.1, и это влияет на внешний вид моего приложения, например, в теме экрана, значок приложения не виден и становится грязным
правильно ... Я изменил предупреждение о безопасности версии 3.4.1 от Google, но значок приложения не виден и становится грязным
источник