文章目录
前言
最近预上线的app都需要安全部门进行安全检测,检测结果是不通过,原因是在同意隐私协议前有请求网络数据并且header中带有系统版本 手机型号等敏感信息。
提示:以下是本篇文章正文内容,下面案例可供参考
原因
在点击同意隐私协议前,进入了一个隐私合规说明的h5页面,在加载h5 web页面时,webview自己加入了几个请求header,其中就有UserAgent。
各字段含义如下图:
字符串 | 说明 |
Mozilla/5.0 | 伪装成Mozilla排版引擎的浏览器以达到兼容 |
(Linux; Android 8.1.0; NX606J Build/OPM1.171019.026; wv) | 浏览器所运行的系统的详细信息 |
AppleWebKit/537.36 | 浏览器所使用的平台 |
(KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.98 | 浏览器平台的详细信息 |
Mobile Safari/537.36 | 被浏览器用于指示特定的直接由浏览器提供或者通过第三方提供的可用的增强功能 |
可以看到第一个小括号里面有两个用户的设备信息,所以安全检测不过。
解决方案
可以通过修改webview的UserAgent去解决:
String userAgent = webView.getSettings().getUserAgentString();
if (!TextUtils.isEmpty(userAgent)) {
String userAgent_sys = userAgent.substring(userAgent.indexOf("("), userAgent.indexOf(")") + 1);
//去掉第一个小括号的设备信息
userAgent = userAgent.replace(userAgent_sys, "");
}
webView.getSettings().setUserAgentString(userAgent);