方法1、jsp:使用fn:escapeXml()解决跨站脚本攻击-存储型
原代码
<textarea id="phraseContent" name="phraseContent" maxlength="1000" class="text_inp_type1 form-control"
style="height: 100px; width:200px; rows="10" value="${phrase.contentStr}"
hiddenonpropertychange="if(value.length>1000) value=value.substr(0,1000)"
value="" notempty="true" emptymsg="模板内容为必填项" maxlength="1000"
maxlenmsg="模板内容不能够超过1000个字符" >${phrase.contentStr}textarea>
修改后
<textarea id="phraseContent" name="phraseContent" maxlength="1000" class="text_inp_type1 form-control"
style="height: 100px; width:200px; rows="10" value="${fn:escapeXml(phrase.contentStr)}"
hiddenonpropertychange="if(value.length>1000) value=value.substr(0,1000)"
value="" notempty="true" emptymsg="模板内容为必填项" maxlength="1000"
maxlenmsg="模板内容不能够超过1000个字符" >${fn:escapeXml(phrase.contentStr)}textarea>
<label id="lblRed" class="font_red12">*label><span id="_verify_phraseContent" style="color:red">span>
方法2、js解决跨站脚本攻击-存储型
提交表单时对输入字符进行编码
function encodeForHTML(str){ return ('' + str)
.replace(/&/g, '&')
.replace(/</g, '<') // DEC=> < HEX=> < Entity=> <
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''') // ' 不推荐,因为它不在HTML规范中
.replace(/\//g, '/');
};