Google Play 商店安全警报说您的应用包含易受攻击的JavaScript 库如何删除安全警告?
Google Play Store Security Alert Says that your app contains Vulnerable JavaScript libraries how to remove the security warning?
在 Google Play Store 中收到如下警告,
您的应用包含一个或多个存在已知安全问题的库。详情请看这个Google Help Center article。
易受攻击的 JavaScript 库:
- 姓名 --> jquery
- 版本 --> 3.3.1
- 已知问题 --> SNYK-JS-JQUERY-174006
- 识别文件 --> res/raw/jquery_min.js
注意:在我的应用程序中加载 webview 时,我将在 webview url 中拦截请求并从原始文件夹资源加载本地 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);
Class 用于加载本地脚本
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 播放删除安全
警报(易受攻击的 JavaScript 库)?
- 如果我将 Jquery 脚本放在我的应用程序的其他地方,将 google 播放
删除安全警报?
- 让我知道加载脚本的有效方法是什么
webview 而不是每次都从服务器加载。
此问题涉及您的 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/ 中找到了这个解决方案并为我工作。
安全通知
您的应用程序包含一个或多个存在一般安全问题的库。有关详细信息,请参阅这篇 Google 帮助中心文章。
易受攻击的JavaScript库:
Version Name Known issue File identified jquery 2.2.4 SNYK-npm:
jquery: 20150627 SNYK-JS-JQUERY-174006 assets / jquery-2.2.4.min.js
Affects APK version 9.
问题:
我用过jquery 3.4.1 版本,它对我的应用程序的外观有影响,例如在显示主题中,应用程序图标不可见并且变得凌乱
正确...我从 Google 更改了版本 3.4.1 安全警告已解决,但是应用程序图标不可见并且变得混乱
- 使用最新的jquery v3.4.0+
- 如果必须使用旧的 jquery v1.x/v2.x 因为你的代码或第三方库依赖(如 jquery 移动等),你可以打个补丁来自 DanielRuf's snyk-js-jquery-174006 (*)
(*) 但我不确定 Google 是如何发现 apk 中的 jquery 文件存在漏洞并已修补...需要测试 (**)
2/1/2020 更新:使用上述方法2 补丁文件无法避免Google 警报检查。删除第一个注释行
/*! jQuery v2.2.4 | (c) jQuery Foundation | jquery.org/license */
在 jquery-2.2.4.min.js 中似乎在我的新版本中有效。(这甚至在我的测试中对未打补丁的文件有效,最好打个补丁)
我已经使用来自 CDN 的 jQuery 解决了这个问题。
我在 jQueryv3+ 不支持的应用程序中使用 jQueryMobile。所以,我别无选择,只能坚持使用 jQuery v2。所以,我使用了 Google 的 CDN 而不是本地 .js 文件并且它成功了!
在 Google Play Store 中收到如下警告,
您的应用包含一个或多个存在已知安全问题的库。详情请看这个Google Help Center article。
易受攻击的 JavaScript 库:
- 姓名 --> jquery
- 版本 --> 3.3.1
- 已知问题 --> SNYK-JS-JQUERY-174006
- 识别文件 --> res/raw/jquery_min.js
注意:在我的应用程序中加载 webview 时,我将在 webview url 中拦截请求并从原始文件夹资源加载本地 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);
Class 用于加载本地脚本
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 播放删除安全 警报(易受攻击的 JavaScript 库)?
- 如果我将 Jquery 脚本放在我的应用程序的其他地方,将 google 播放 删除安全警报?
- 让我知道加载脚本的有效方法是什么 webview 而不是每次都从服务器加载。
此问题涉及您的 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/ 中找到了这个解决方案并为我工作。
安全通知
您的应用程序包含一个或多个存在一般安全问题的库。有关详细信息,请参阅这篇 Google 帮助中心文章。
易受攻击的JavaScript库:
Version Name Known issue File identified jquery 2.2.4 SNYK-npm: jquery: 20150627 SNYK-JS-JQUERY-174006 assets / jquery-2.2.4.min.js Affects APK version 9.
问题: 我用过jquery 3.4.1 版本,它对我的应用程序的外观有影响,例如在显示主题中,应用程序图标不可见并且变得凌乱
正确...我从 Google 更改了版本 3.4.1 安全警告已解决,但是应用程序图标不可见并且变得混乱
- 使用最新的jquery v3.4.0+
- 如果必须使用旧的 jquery v1.x/v2.x 因为你的代码或第三方库依赖(如 jquery 移动等),你可以打个补丁来自 DanielRuf's snyk-js-jquery-174006 (*)
(*) 但我不确定 Google 是如何发现 apk 中的 jquery 文件存在漏洞并已修补...需要测试 (**)
2/1/2020 更新:使用上述方法2 补丁文件无法避免Google 警报检查。删除第一个注释行
/*! jQuery v2.2.4 | (c) jQuery Foundation | jquery.org/license */
在 jquery-2.2.4.min.js 中似乎在我的新版本中有效。(这甚至在我的测试中对未打补丁的文件有效,最好打个补丁)
我已经使用来自 CDN 的 jQuery 解决了这个问题。
我在 jQueryv3+ 不支持的应用程序中使用 jQueryMobile。所以,我别无选择,只能坚持使用 jQuery v2。所以,我使用了 Google 的 CDN 而不是本地 .js 文件并且它成功了!