我正在开发一个小的JSTL项目,我想阻止xss,我想要采取的第一步是在html中转义。
我应该逃避什么,不是什么? 例如,以下代码从数据库点打印出一个表单
<c:forEach var="player" items="${players}" varStatus="counter">
<li>
<label for="<c:out value="${counter.count}"/>" >${player.email}:</label>
<input class="values" id="<c:out value="${counter.count}"/>" type="number" name="<c:out value="${player.id}"/>" ondblclick="fillInInput(this)" autocomplete="off" placeholder="<c:out value="${player.points}"/>">
</li>
</c:forEach>
这会打印一些错误消息:
<c:if test="${errors.size() >0}">
<div id="errors">
<c:forEach var="error" items="${errors}">
<p><c:out value="${error}"/></p>
</c:forEach>
</div>
</c:if>
这将打印一个包含数据库奖励的列表
<c:forEach var="reward" items="${rewards}">
<tr>
<td><c:out value="${reward.name}"/></td>
</tr>
</c:forEach>
这将打印一个带有奖励类型的复选框列表,用户可以从中选择:
<c:forEach var="reward" items="${rewards}" varStatus="counter">
<li><input id="<c:out value="${counter.count + 100}"/>" class="rewards" type="checkbox" onchange="checkButton('button2','rewards')" name="rewardType" value="<c:out value="${reward}"/>" checked>
<label for="<c:out value="${counter.count + 100}"/>"><c:out value="${reward}"/></label></li>
</c:forEach>
现在我只是逃过一切,但感觉不对劲。任何人都可以告诉我,如果有一些规则或某些事情,所以我知道我应该逃避什么,不是什么?
提前致谢。