我掃描我的Checkmarx項目及其所反映的XSS表現爲一個Java對象是在下面的方法中的參數是checkmarx報告的錯誤:如何防止反射XSS爲Java對象
方法readDataUsingQueryObject在行743 of /src/main/java/com/cognizant/hap/core/controller/DataController.java獲取查詢元素的用戶輸入。 然後,此元素的值將通過代碼流動,而不會被正確清理或驗證,並且最終會在/src/main/java/com/cognizant/hap/core/controller/DataController的743行的readDataUsingQueryObject方法中顯示給用戶。 java的。這可能會導致發生跨站點腳本攻擊 。
下面是方法:
@RequestMapping(value = { "/readGraph/{iLakeId}/{dataPoolName}/{dataspaceName}/{datasetName}" }, headers = "Accept=*/*", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
@ResponseBody
public ResponseEntity<DataLakeGraph> readGraph(
@ApiParam(name = "iLakeId", value = "int", required = true) @PathVariable int iLakeId,
@ApiParam(name = "dataPoolName", value = "Datapool name", required = true) @PathVariable String dataPoolName,
@ApiParam(name = "dataspaceName", value = "Dataspace name", required = true) @PathVariable String dataspaceName,
@ApiParam(name = "datasetName", value = "Graph Dataset name", required = true) @PathVariable String datasetName,
@ApiParam(name = "query", value = "Query model", required = true) @RequestBody(required = false) Query query,
HttpServletResponse servRes) {
DataLakeGraph dataLake = iLakeService.readGraph(iLakeId,
dataPoolName, dataspaceName, datasetName, query);
return HAPUtil.createResponseEntity(dataLake, HttpStatus.OK);
}
下面是類:
public class Query {
private int size;
private int offset;
private String queryString;
private List<Field> select;
private List<Filter> filters;
private String filterString;
private SortOn sortOn;
private List<Aggregation> aggregations;
private Histogram histogram;
private GraphQuery graphQuery;
private boolean highlight;
//setters and getters
}
能否請你讓我知道如何消毒或確認的查詢對象,它是在方法的參數?