我正在尝试阻止表单上的XSS攻击。我读过following,但我不清楚如何实施他们的建议。
我想防止攻击,所以我需要检查username
的值。它可以通过以下方式攻击,例如:
curl -X POST -d "username=%3C%2Fscript%3E%3Cscript%3Efunction()%7bqxsspbCegNO0%7d%3B%3C%2Fscript%3E&forgotUsernameBtn=1" https://xyz/mypage.do >> test.txt
字符串
问题:
我应该添加什么JavaScript来让它进行检查(我相信调用htmlEncode
和jsEscape
函数)?
我有以下内容:
jsp
<script>
function htmlEncode(str){
return String(str).replace(/[^\w. ]/gi, function(c){
return '&#'+c.charCodeAt(0)+';';
});
}
function jsEscape(str){
return String(str).replace(/[^\w. ]/gi, function(c){
return '\\u'+('0000'+c.charCodeAt(0).toString(16)).slice(-4);
});
}
</script>
<html:form action="forgotUsername" styleId="loginFormBean" styleClass="margin-1rem-top">
<div>
<div class="form-floating field">
<input autocomplete="off" pattern="[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
type="text" id="username" name="username" required class="form-control"
value="${loginForm.username}" placeholder="Email"/>
<label for="username">Email</label>
<span class="autoComplete-img">
<img src="assets/images/envelope-gray.svg" alt="">
</span>
</div>
<div class="actions margin-1rem-top text-center">
<button type="submit" id="submitButton" name="forgotUsernameBtn"
class="submit butn-blue butn-md butn"
onclick = "sanitize();">
Forgot Username
</button>
</div>
</div>
</html:form>
型
1条答案
按热度按时间qltillow1#
我应该添加什么JavaScript来让它做检查
无。
您需要防御XSS的地方是当用户输入被插入到代码(通常是HTML文档)中时。
例如,如果要在HTML文档中显示用户名,则可以使用JSP将用户输入转换为安全的HTML。
在表单提交之前尝试使用客户端JavaScript执行此操作是徒劳的,因为:
curl
示例一样!)