在Google Play商店中,这样的警告如下
您的应用包含一个或多个存在已知安全问题的库。有关详细信息,请参见此Google Help Center article。
易受攻击的JavaScript库:
注意:在我的应用程序中加载webview时,我将在webview url中访问InterceptRequest并从原始文件夹资源中加载本地jquery_min.js文件,由于此功能,这有助于我们更快地加载网页,并且我每月从服务器上保存5 GB下载
示例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);
}
}
答案 0 :(得分:4)
此问题涉及来自res / raw / jquery_min.js文件的jquery的旧漏洞。
只需将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/中找到了这个解决方案,并为我工作。
答案 1 :(得分:0)
安全通知
您的应用程序包含一个或多个具有一般安全性问题的库。有关详细信息,请参阅此Google帮助中心文章。
易受攻击的JavaScript库:
版本名称已知问题文件已标识jquery 2.2.4 SNYK-npm: jQuery:20150627 SNYK-JS-JQUERY-174006资产/ jquery-2.2.4.min.js 影响APK版本9。
问题: 我使用了3.4.1版的jQuery,它对应用程序的外观有影响,例如在显示主题中,应用程序图标不可见并且变得混乱
正确...我更改了Google的3.4.1版安全警告,但已解决,但该应用程序图标不可见并且变得混乱
答案 2 :(得分:0)
(*),但我不确定Google如何找到apk中的jquery文件是否存在漏洞并已进行了修补...需要测试
答案 3 :(得分:0)
我已经使用CDN中的jQuery解决了这个问题。
我正在我的应用程序中使用jQueryMobile,而jQuery v3 +不支持。因此,我别无选择,只能坚持使用jQuery v2。因此,我使用了Google的CDN而不是本地.js文件,它起作用了!