Google Play 스토어에서 아래와 같은 경고가 표시됩니다.
앱에 알려진 보안 문제가있는 하나 이상의 라이브러리가 있습니다. 자세한 내용은이 Google 도움말 센터를 참조 하십시오.
취약한 JavaScript 라이브러리 :
- 이름-> jquery
- 버전-> 3.3.1
- 알려진 문제-> SNYK-JS-JQUERY-174006
- 확인 된 파일-> res / raw / jquery_min.js
참고 : 내 응용 프로그램에서 webview를로드 할 때 webview url에서 InterceptRequest를하고 원시 폴더 리소스에서 로컬 jquery_min.js 파일을로드하면이 기능으로 인해 웹 페이지를 더 빨리로드하고 매월 서버에서 5GB 다운로드를 저장할 수 있습니다.
샘플 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);
}
}
- Jquery 스크립트를 처음 업데이트하면 Google에서 보안 경고 (취약한 JavaScript 라이브러리)를 제거합니까?
- 내 앱 어딘가에 Jquery 스크립트를 배치하면 Google이 보안 경고를 제거합니까?
- 서버에서 매번로드하지 않고 웹보기에서 스크립트를로드하는 효율적인 방법이 무엇인지 알려주십시오.
답변
이 문제는 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/ 에서 찾았고 나를 위해 일했다.
답변
- 최신 jquery v3.4.0 이상을 사용합니다
- 코드 또는 타사 라이브러리 의존성 (jquery mobile 등)으로 인해 이전 jquery v1.x / v2.x를 사용해야하는 경우 DanielRuf의 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 내부 (및 jquery-patched.2.2.4.min.js로 이름 바꾸기)가 새 릴리스에서 작동하는 것 같습니다. (그리고 이것은 테스트에서 패치되지 않은 파일에서도 작동했습니다. 패치가 더 좋습니다)
답변
보안 알림
응용 프로그램에 일반적인 보안 문제가있는 하나 이상의 라이브러리가 있습니다. 자세한 내용은이 Google 도움말 센터를 참조하십시오.
취약한 JavaScript 라이브러리 :
알려진 파일 이름 jquery 2.2.4 SNYK-npm : jquery : 20150627 SNYK-JS-JQUERY-174006 asset / jquery-2.2.4.min.js APK 버전 9에 영향을줍니다.
문제 : jquery 버전 3.4.1을 사용했는데 응용 프로그램의 모양에 영향을 미칩니다 (예 : 디스플레이 테마). 응용 프로그램 아이콘이 표시되지 않고 지저분한
올바른 … Google에서 버전 3.4.1 보안 경고를 변경했지만 응용 프로그램 아이콘이 표시되지 않고 지저분한