在我们网站的几个区域中实施了InfoPath表单来提交请求。一个示例是请求表单,用户可以向可以回复该消息的工作人员提问。如何防止InfoPath表单中的跨站点脚本
有人可能在某个InfoPath控件(主题或消息正文)中输入JavaScript并通过InfoPath表单提交数据。然后,JavaScript代码会在该页面获取警报消息的情况下触发。我研究了很多,但没有找到明确的答案。
是否有任何直接的方法来限制/防止这种类型的验证XSS?任何的意见都将会有帮助。
先谢谢了!
在我们网站的几个区域中实施了InfoPath表单来提交请求。一个示例是请求表单,用户可以向可以回复该消息的工作人员提问。如何防止InfoPath表单中的跨站点脚本
有人可能在某个InfoPath控件(主题或消息正文)中输入JavaScript并通过InfoPath表单提交数据。然后,JavaScript代码会在该页面获取警报消息的情况下触发。我研究了很多,但没有找到明确的答案。
是否有任何直接的方法来限制/防止这种类型的验证XSS?任何的意见都将会有帮助。
先谢谢了!
可以编码文本,例如,
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('<');
else if (c == '>')
encodedValue.push('>');
else if (c == '&')
encodedValue.push('&');
else if (c == '"')
encodedValue.push('"');
else
encodedValue.push(c);
}
alert('encoded value is: ' + encodedValue.join(''));
问候,
本
如果通过JavaScript产生员工的HTML,那么你可以使用的innerText避免任何HTML标记解释:
document.getElementById('text').innerText = untrustedOutput;
如果是服务器端,你可以看看benban123's回答并适应你的语言。在PHP中,我会使用:
htmlentities($text);
(请参阅:http://www.php.net/manual/en/function.htmlentities.php)。 但我不确定它的有效性,XSS很多。
编辑:如果您的文本只是意味着通过javascript函数alert(msg)
显示,我认为你是安全的,因为它不会被解释(也许除了换行字符/ n)。
你如何生成提供给员工的HTML? – 2011-12-21 16:21:09
工作人员页面的编码与邮件页面完全一样......它是一个单独的页面,使用ASP.NET和C#在单独的解决方案中创建。数据通过服务器传递。 这只是我们使用它的一个示例,但在网站的各个部分都有InfoPath表单。我想我只是想知道如何处理与InfoPath表单一般的XSS。如果表单以纯文本形式提交数据,我认为这不会成为问题,但有些控件是Rich-Text,所以我担心有人可以通过它发送脚本。 – easyeman77 2011-12-21 17:10:06