En Google Play Store recibo una advertencia a continuación como esta,
Su aplicación contiene una o más bibliotecas con problemas de seguridad conocidos. Consulte este artículo del Centro de ayuda de Google para obtener más detalles.
Bibliotecas JavaScript vulnerables:
- Nombre -> jquery
- Versión -> 3.3.1
- Problemas conocidos -> SNYK-JS-JQUERY-174006
- Archivos identificados -> res / raw / jquery_min.js
Nota: cuando cargue webview en mi aplicación, interceptaré la solicitud en la url de webview y cargaré el archivo jquery_min.js local desde el recurso de carpeta sin procesar que nos ayuda a cargar la página web más rápido debido a esta función y ahorro 5 gb de descarga del servidor por mes.
Programa de muestra de 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);
Clase para cargar scripts locales
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);
}
}
- Si actualizo el nuevo script de Jquery, ¿Google Play eliminará la alerta de seguridad (bibliotecas de JavaScript vulnerables)?
- Si coloco el script Jquery en otro lugar de mi aplicación, ¿Google Play eliminará la Alerta de seguridad?
- Avíseme cuál es la forma eficiente de cargar el script en webview sin cargarlo cada vez desde el servidor.
javascript
android
webview
google-play
google-play-console
Sarath Kumar
fuente
fuente
Respuestas:
Este problema se refiere a una antigua vulnerabilidad de jquery de su archivo res / raw / jquery_min.js.
Acabo de actualizar jquery_min.js a v3.4.1 y arreglarlo.
Puede arreglarlo manualmente en su cambio de archivo en el código:
Desde:
if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||
A:
if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||
Encontré esta solución en https://www.privacy-wise.com/mitigating-cve-2019-11358-in-old-versions-of-jquery/ y trabajé para mí.
fuente
(*) pero no estoy seguro de cómo Google encuentra que el archivo jquery en apk tiene vulnerabilidad y ha sido parcheado ... necesita probar (**)
2/1/2020 actualizado: utilizar el archivo parcheado del método 2 anterior no puede evitar la verificación de alertas de Google. Elimina la primera línea de comentario.
dentro de jquery-2.2.4.min.js (y también cambio el nombre a jquery-patched.2.2.4.min.js) parece funcionar en mi nueva versión. (y esto funcionó incluso en el archivo no parcheado en mi prueba, debería hacer un parche)
fuente
Notificación de seguridad
Su aplicación contiene una o más bibliotecas que tienen problemas de seguridad generales. Consulte este artículo del Centro de ayuda de Google para obtener más detalles.
Biblioteca de JavaScript vulnerable:
Problema: he usado jquery versión 3.4.1 y tiene un efecto en la apariencia de mi aplicación, por ejemplo, en el tema de visualización, el icono de la aplicación no es visible y se vuelve desordenado
correcto ... Cambié la advertencia de seguridad de la versión 3.4.1 de Google resuelta pero, el ícono de la aplicación no es visible y se vuelve desordenado
fuente