如何防止InfoPath表单中的跨站点脚本

时间:2011-12-21 16:05:03

标签: javascript infopath xss

我们网站的多个区域都实施了InfoPath表单来提交请求。一个示例是一个请求表单,用户可以向可以回复该邮件的工作人员提问。

有人可能会在其中一个InfoPath控件(主题或邮件正文)中输入JavaScript,并通过InfoPath表单提交数据。然后,JavaScript代码在工作人员侧触发,该页面获取警报消息。我已经研究了很多,但还没有找到明确的答案。

是否有任何直接的方法来限制/阻止XSS进行此类验证?任何建议都会有所帮助。

提前致谢!

2 个答案:

答案 0 :(得分:0)

您可以对文字进行编码,例如

var titleValue = '<'+'script type="text/javascript">alert(123);<'+'script>',
            encodedValue = [],
            c;
        for (var i = 0;i < titleValue.length;i ++) {
            c = titleValue.charAt(i);
            if (c == '<')
                encodedValue.push('&lt;');
            else if (c == '>')
                encodedValue.push('&gt;');
            else if (c == '&')
                encodedValue.push('&amp;');
            else if (c == '"')
                encodedValue.push('&quot;');
            else
                encodedValue.push(c);
        }
        alert('encoded value is: ' + encodedValue.join(''));

此致

答案 1 :(得分:0)

如果您的员工的HTML是通过Javascript生成的,那么您可以使用innerText来避免任何HTML标记解释:

document.getElementById('text').innerText = untrustedOutput;

如果它是服务器端,你可以查看benban123的答案并将其改编为你的langague。在php中,我使用:

htmlentities( $text );

(见:http://www.php.net/manual/en/function.htmlentities.php)。 但我不确定它的有效性,XSS很多。

编辑:如果您的文本只是通过javascript函数alert(msg)显示,我认为您是安全的,因为不会被解释(可能除了换行符转义字符/ n)。< / p>