修复跨站点脚本问题

Fix cross site scripting issue

本文关键字:脚本 问题 站点      更新时间:2023-11-06

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

如果用户为字段1输入<html>testString</html> or <script>alert("1")</script>,它将作为编码发送到服务器,并作为正确编码检索回来,但如果用户不修改包含这些标签的字段1,而是更新其他字段,如字段2、3,则字段1将被打乱,因为它正被发送到未编码的服务器。

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

我还使用了一个Java资源来发布表单值?那么有什么变化吗?

为此,您必须替换'<'等字符对应的html实体等价于'&lt’。最好在服务器端进行,因为客户端验证可能会被用户阻止。在javascript中,我们可以这样做。

document.write(htmlentities("<script>"));
function htmlentities(str) {
    var ret = str.replace(/['u00A0-'u9999<>'&]/gim, function(i) {
       return '&#'+i.charCodeAt(0)+';';
    });
    return ret;
}