什么逃脱XSS(JSTL)

时间:2014-12-21 09:08:25

标签: jstl xss cout

我正在开发一个小的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>

现在我只是逃过一切,但感觉不对劲。任何人都可以告诉我,如果有一些规则或某些事情,所以我知道我应该逃避什么,不是什么?

提前致谢。

0 个答案:

没有答案