Na Google Play Store, recebo um aviso abaixo como este,
Seu aplicativo contém uma ou mais bibliotecas com problemas de segurança conhecidos. Consulte este artigo da Central de Ajuda do Google para obter detalhes.
Bibliotecas JavaScript vulneráveis:
- Nome -> jquery
- Versão -> 3.3.1
- Problemas conhecidos -> SNYK-JS-JQUERY-174006
- Arquivos identificados -> res / raw / jquery_min.js
Nota: ao carregar o webview no meu aplicativo, interceptarei o URL no webview e carrego o arquivo jquery_min.js local a partir do recurso de pasta bruta, que nos ajuda a carregar a página da Web mais rapidamente devido a essa função e economizo 5 gb de download do servidor por mês.
Programa WebView de amostra
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);
Classe para carregar scripts locais
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);
}
}
- Se eu atualizar um novo script do Jquery, o Google Play removerá o Alerta de segurança (bibliotecas JavaScript vulneráveis)?
- Se eu colocar o script Jquery em outro lugar no meu aplicativo, o Google Play removerá o Alerta de segurança?
- Deixe-me saber qual é a maneira eficiente de carregar o script na webview sem carregar todas as vezes do servidor.
javascript
android
webview
google-play
google-play-console
Sarath Kumar
fonte
fonte
Respostas:
Este problema refere-se a uma antiga vulnerabilidade do jquery do seu arquivo res / raw / jquery_min.js.
Apenas atualizei o jquery_min.js para a v3.4.1 e corrija-o.
Você pode corrigi-lo manualmente na sua alteração de arquivo no código:
De:
if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||
Para:
if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||
Encontrei esta solução em https://www.privacy-wise.com/mitigating-cve-2019-11358-in-old-versions-of-jquery/ e trabalhei para mim.
fonte
(*) mas não tenho certeza de como o Google encontra o arquivo jquery no apk tem vulnerabilidade e foi corrigido ... precisa testar (**)
02/01/2020 atualizado: o arquivo corrigido do método 2 acima não pode evitar a verificação de alertas do Google. Remove a primeira linha de comentário
dentro do jquery-2.2.4.min.js (e também renomeio para jquery-patched.2.2.4.min.js) parece funcionar na minha nova versão. (e isso funcionou mesmo no arquivo sem patch do meu teste, é melhor fazer um patch)
fonte
Notificação de segurança
Seu aplicativo contém uma ou mais bibliotecas que têm problemas gerais de segurança. Consulte este artigo da Central de Ajuda do Google para obter detalhes.
Biblioteca JavaScript vulnerável:
Problema: usei o jquery versão 3.4.1 e isso afeta a aparência do meu aplicativo, por exemplo, no tema de exibição, o ícone do aplicativo não fica visível e fica confuso
correto ... Alterei o aviso de segurança da versão 3.4.1 do Google resolvido, mas o ícone do aplicativo não está visível e fica confuso
fonte