我遇到了跨网站脚本问题(由其中一个工具报告)
我的屏幕上有各种字段的表格。
现在,如果用户为字段1中的一个输入<script>alert("1")</script>
标记,则浏览器将显示值为1的弹出窗口。
如果用户为字段1输入<html>testString</html> or <script>alert("1")</script>
,则它将按编码发送到服务器并按正确编码检索回来,但如果用户不修改包含这些标记的字段1,但更新其他字段(如字段2) ,3,字段1在被发送到服务器非编码时被弄乱了。
如何解决此问题?有没有解决这些问题的标准方法?
我还使用了一个发布表单值的Java资源吗?那么任何改变也一样吗?
答案 0 :(得分:1)
为此你必须替换像'&lt;'这样的字符。相应的html实体等同于'&amp; lt'。最好在服务器端完成它,因为客户端验证可以被用户阻止。在javascript中我们可以这样做。
document.write(htmlentities("<script>"));
function htmlentities(str) {
var ret = str.replace(/[\u00A0-\u9999<>\&]/gim, function(i) {
return '&#'+i.charCodeAt(0)+';';
});
return ret;
}