我的Android应用程序项目使用Checkmarx扫描源代码以查找安全问题。 Checkmarx报告了Google Volley库的问题。这是错误描述:
在第89行的方法performRequest \程序\库\凌空的\ src \主\ java中的\ com \机器人\凌空\工具箱\ HurlStack.java 获取getHeaders元素的用户输入。那么这个元素的价值 流经代码而未经过适当的消毒或验证 并最终在方法parseNetworkResponse中显示给用户 在第61行 \程序\库\凌空的\ src \主\ java中的\ com \机器人\凌空\工具箱\ JsonArrayRequest.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应用程序可能会发生跨站点脚本攻击?这只会在您使用网页浏览时发生吗?
答案 0 :(得分:2)
让我先回答你的最后一个问题。是的,几乎只有WebView受其影响。另一个(不常见的)场景可能是将XSS有效负载保存到文件中,然后由浏览器打开。
HTTP标头被认为是XSS的有效向量,因此它看起来不像是误报警。以下是进一步阅读的两个资源: