我是CheckMarx的新手,可以防止XSS攻擊。我得到這個錯誤:CheckMarx - 跨站點腳本攻擊
Method %> at line 1 of \app\src\web\searchresults.jsp gets user input for the getSearchResults 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 %> at line 1 of \app\src\web\searchresults.jsp. This may enable a Cross-Site-Scripting attack.
這是它在下面的代碼剪斷抱怨行:
<c:forEach var="combo" items="${searchForm.searchResults}">
代碼剪斷從searchresults.jsp(修改後的代碼,以保護無辜)
<% int i = 0;%>
<c:forEach var="combo" items="${searchForm.searchResults}">
<tr <%=i++%2==0?"":"class='odd'"%>>
<td align="center" style="width: 40px;"><c:out value="${combo.stay.status}"/></td>
<c:choose>
<c:when test="${hasDetailAccess}">
<c:url var="detailLink" value="/detail.do">
<c:param name="code" value="${searchForm.code}"/>
<c:param name="brandCode" value="${searchForm.brandCode}"/>
<c:param name="smUni" value="${combo.object1.smUni}"/>
<c:param name="shUni" value="${combo.object1.shUni}"/>
<c:param name="searchType" value="${searchForm.searchType}"/>
</c:choose>
<td style="width: 80px;"><fmt:formatDate pattern="MMM dd yyyy" value="${combo.object1.dateMade.date}"/></td>
<td style="width: 80px;"><c:out value="${combo.object1.lastName}"/></td>
<td style="width: 80px;"><c:out value="${combo.object1.firstName}"/></td>
</c:forEach>
,我不是肯定的如何解決的部分是,「searchForm.searchResults」是可以引用多個對象,這種情況下,「object1」的queueCombo。
我的想法是對物體進行清理。我這樣做的方法是添加頁面使用的所需屬性(因爲「object1」是大量的屬性),並將其作爲單個值並在構建對象時填充它們。