У нас есть очень старый веб-сервер с некоторыми страницами JSP, как показано ниже. Кажется, я проверил версию входного параметра с помощью белого списка [a-zA-Z0-9]*. Но CheckMarx по-прежнему получил предупреждение о подключении XSS: эти ненадежные данные встраиваются прямо в вывод без надлежащей очистки или кодирования, что позволяет злоумышленнику внедрить вредоносный код в вывод. Знаете ли вы, как правильно сделать это на страницах JSP? Он просто использовался для отображения чего-то из ввода параметра.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="com.mytest.util.SecurityService"%>
<html>
<%
String version = SecurityService.getSafeContent(request.getParameter("version"));
%>
<head>
<title>My Project</title>
</head>
<body>
<div style="text-align: center">
<table>
<tr>
<td>
<div style="text-align: center"><%=version%></div>
</td>
</tr>
</table>
</div>
</body>
</html>
public class SecurityService{
public static final String PARAM_INVALID_DATA_POINT = "";
public static String getSafeContent(String content) {
if(!StringUtils.isEmpty(content) && content.matches("[a-zA-Z0-9]*")) {
return content;
}
return PARAM_INVALID_DATA_POINT;
}
}
Спасибо,