1

我的 Android 应用项目使用 Checkmarx 扫描源代码以查找安全问题。Checkmarx 报告了 Google Volley 库的问题。这是错误描述:

\app\libraries\volley\src\main\java\com\android\volley\toolbox\HurlStack.java 第 89 行的方法 performRequest 获取用户对 getHeaders 元素的输入。然后,此元素的值在未经过适当清理或验证的情况下流经代码,并最终在 \app\libraries\volley\src\main\java\com\android\volley\toolbox\JsonArrayRequest 的第 61 行的方法 parseNetworkResponse 中显示给用户.java。这可能会启用跨站点脚本攻击。

  public HttpResponse performRequest(Request<?> request, Map<String, String> additionalHeaders)
            throws IOException, AuthFailureError {
        String url = request.getUrl();
        HashMap<String, String> map = new HashMap<String, String>();
        map.putAll(request.getHeaders());
        map.putAll(additionalHeaders);
     ....
}

它表示请求的标头被缓存,然后在JsonArrayRequest::parseNetworkResponse. 但是我根本找不到它显示给用户。这是虚惊一场吗?在什么情况下,Android 应用程序可能会发生跨站点脚本攻击?仅当您使用网络视图时才会发生这种情况吗?

4

1 回答 1

2

我先回答你的最后一个问题。是的,几乎只有 WebViews 会受到它的影响。另一种(不太常见的)场景可能是 XSS 有效负载被保存到文件中,然后由浏览器打开。

HTTP 标头被认为是 XSS 的有效向量,因此它看起来不像是误报。这里有两个资源供进一步阅读:

于 2016-12-28T12:13:07.593 回答