iT邦幫忙

0

JSTL & Expression language

<select id="selectItem">							
		<c:forEach items="${sessionScope.XXX}" var="item">
								<option value="${item.map['TYPE']}">${item.map['TYPE']}</option>
		</c:forEach>						
</select>

以上是JSP的部分程式碼,是一個下拉式選單(確定可以WORK)
現在我想要用apache commons-lang提供的StringEscapeUtils.escapeHtml()方法去處理${item.map['TYPE']}有可能造成的XSS攻擊(弱點掃描掃到 那行有可能遭到攻擊)
小弟對EL JSTL不太熟稔
想請問程式碼該怎麼改?

*補充
一般來說我會這樣處理可能造成的XSS攻擊(title的str原本有XSS風險,所以在宣告變數時加上StringEscapeUtils.escapeHtml())
<%
String str = StringEscapeUtils.escapeHtml(container.getXXX(request));
%>

<html>
	<head>
		<title><%=str %></title>
    </head>
 </html>

我的想法很簡單,想把可能造成XSS風險的程式碼丟進去StringEscapeUtils.escapeHtml()裡,不過
<%=StringEscapeUtils.escapeHtml(${item.map['TYPE']})%> 這樣寫似乎是不行的

fillano iT邦超人 1 級 ‧ 2019-05-21 09:11:44 檢舉
通常是在資料進到後端時處理吧,放在這裡看起來有點怪。
Rex Chien iT邦新手 4 級 ‧ 2019-05-21 09:18:34 檢舉
試試看這樣?
${org.apache.commons.lang3.StringEscapeUtils(item.map['TYPE'])}

尚未有邦友回答

立即登入回答