Im Google Play Store wird unten eine Warnung angezeigt:
Ihre App enthält eine oder mehrere Bibliotheken mit bekannten Sicherheitsproblemen. Weitere Informationen finden Sie in diesem Artikel in der Google-Hilfe .
Anfällige JavaScript-Bibliotheken:
- Name -> Abfrage
- Version -> 3.3.1
- Bekannte Probleme -> SNYK-JS-JQUERY-174006
- Identifizierte Dateien -> res / raw / jquery_min.js
Hinweis: Wenn ich Webview in meine App lade, lade ich InterceptRequest in der Webview-URL und lade die lokale Datei jquery_min.js aus der Rohordnerressource, wodurch wir die Webseite aufgrund dieser Funktion schneller laden können. Außerdem spare ich 5 GB Download vom Server pro Monat.
Beispiel für ein WebView-Programm
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);
Klasse zum Laden lokaler Skripte
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);
}
}
- Wenn ich ein neues Jquery-Skript aktualisiere, entfernt Google Play dann den Sicherheitsalarm (gefährdete JavaScript-Bibliotheken)?
- Wenn ich das Jquery-Skript an einer anderen Stelle in meiner App platziere, entfernt Google Play dann den Sicherheitsalarm?
- Lassen Sie mich wissen, wie das Skript in der Webansicht effizient geladen werden kann, ohne jedes Mal vom Server geladen zu werden.
javascript
android
webview
google-play
google-play-console
Sarath Kumar
quelle
quelle
Antworten:
Dieses Problem bezieht sich auf eine alte Sicherheitsanfälligkeit von jquery aus Ihrer Datei res / raw / jquery_min.js.
Aktualisieren Sie einfach die Datei jquery_min.js auf Version 3.4.1 und beheben Sie sie.
Sie können es manuell in Ihrer Datei ändern, indem Sie den Code ändern:
Von:
if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||
Zu:
if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||
Ich habe diese Lösung unter https://www.privacy-wise.com/mitigating-cve-2019-11358-in-old-versions-of-jquery/ gefunden und für mich gearbeitet.
quelle
(*) aber ich bin nicht sicher, wie Google findet, dass die jquery-Datei in apk verwundbar ist und gepatcht wurde ... muss getestet werden (**)
01.02.2020 aktualisiert: Die Verwendung der oben genannten gepatchten Datei nach Methode 2 kann die Überprüfung der Google-Warnmeldungen nicht vermeiden. Entfernt die erste Kommentarzeile
in der jquery-2.2.4.min.js (und ich benenne sie auch in jquery-patched.2.2.4.min.js um) scheint in meiner neuen Version funktioniert zu haben. (und dies funktionierte sogar bei der nicht gepatchten Datei in meinem Test, es sollte besser einen Patch machen)
quelle
Sicherheitsbenachrichtigung
Ihre Anwendung enthält eine oder mehrere Bibliotheken mit allgemeinen Sicherheitsproblemen. Weitere Informationen finden Sie in diesem Artikel in der Google-Hilfe.
Anfällige JavaScript-Bibliothek:
Problem: Ich habe jquery Version 3.4.1 verwendet und es wirkt sich auf das Erscheinungsbild meiner Anwendung aus, z. B. im Anzeigethema, das Anwendungssymbol ist nicht sichtbar und wird unübersichtlich
Richtig ... Ich habe die Sicherheitswarnung von Version 3.4.1 von Google geändert, aber das Anwendungssymbol ist nicht sichtbar und wird unordentlich
quelle