在已经编写的应用程序中,有一个方法getHeaders(String cookie)实例化一个新的HttpHeader对象,并将内容类型和cookie设置到标题中。代码如下:
private HttpHeaders getHeaders(String cartIdCookies) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
headers.add(HttpHeaders.COOKIE, cartIdCookies);
headers.add(HttpHeaders.HOST, "www.karan.com");
return headers;
}
此方法用于生成requestEntity,然后在restTemplate exchange()中使用以获得httpresponse。代码如下:
HttpHeaders headers = getHeaders(postCookies);
HttpEntity<T> requestEntity = new HttpEntity<>(requestModel, headers);
response = restTemplate.exchange(url, method, requestEntity, JsonNode.class);
Fortify扫描显示了一个问题,指出在此行上的标头操作
headers.add(HttpHeaders.COOKIE, cartIdCookies);
如果我对此行发表评论并运行,则不会引发任何问题。但是标头中需要该行,因为它们在cartIdCookies中添加了很多信息,并被添加为cookie。
设防错误为:
GenericRestTemplate.java中的getHeaders()方法在第71行的HTTP响应标头中包含未经验证的数据。这可以发起攻击,例如缓存中毒,跨站点脚本,跨用户污损,页面劫持,cookie操纵或打开重定向。
我正在寻找解决此错误的方法。我在添加cookie语句的上方添加了虚拟验证语句,以查看它是否不会引发该错误。但它仍在显示。我在网上搜索,查看是否有任何方法可以在添加Cookie之前对其进行清理。但是我什么也没找到。