修复跨站点脚本问题

时间:2015-02-13 09:19:03

标签: javascript jquery encoding xss cross-site

我遇到了跨网站脚本问题(由其中一个工具报告) 我的屏幕上有各种字段的表格。 现在,如果用户为字段1中的一个输入<script>alert("1")</script>标记,则浏览器将显示值为1的弹出窗口。

如果用户为字段1输入<html>testString</html> or <script>alert("1")</script>,则它将按编码发送到服务器并按正确编码检索回来,但如果用户不修改包含这些标记的字段1,但更新其他字段(如字段2) ,3,字段1在被发送到服务器非编码时被弄乱了。

如何解决此问题?有没有解决这些问题的标准方法?

我还使用了一个发布表单值的Java资源吗?那么任何改变也一样吗?

1 个答案:

答案 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;
}