checkmarx 报告 Volley REFELCTED_XSS_ALL_CLIENT

checkmarx reported REFELCTED_XSS_ALL_CLIENT for Volley

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

Method performRequest at line 89 of \app\libraries\volley\src\main\java\com\android\volley\toolbox\HurlStack.java gets user input for the getHeaders element. This element’s value then flows through the code without being properly sanitized or validated and is eventually displayed to the user in method parseNetworkResponse at line 61 of \app\libraries\volley\src\main\java\com\android\volley\toolbox\JsonArrayRequest.java. This may enable a Cross-Site-Scripting attack.

  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);
     ....
}

它表示请求的 headers 被缓存并稍后在 JsonArrayRequest::parseNetworkResponse 中显示给用户。但是我根本找不到它显示给用户。这是误报吗?在什么情况下 Cross-Site-Scripting 攻击可能会发生在 Android 应用程序上?只有当您使用网络视图时才会发生这种情况吗?

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

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