由多个系统访问的HTML编码文本

时间:2014-03-11 01:25:18

标签: security xss html-encode

我们有多个系统相互交互。有一个面向公众的网站,客户输入文字。有一个Web服务将文本输入CRM数据库。作为一种好的做法,文本在转发到Web服务之前是HTML编码的。我们有两个应用程序阅读本文,一个是Web应用程序,我们有HTML解码代码。另一个是第三方CRM,它没有解码代码,因此它向用户显示HTML字符。

我正在尝试找到一种防止用户查看HTML字符的解决方案。 CRM是第三方应用程序,在生产中,因此每个人都不愿意对CRM进行任何更改。

还有其他解决方案吗?一种建议是在将文本输入CRM数据库之前解码文本。这是一个很好的解决方案还是其他任何一个。

2 个答案:

答案 0 :(得分:0)

在大多数环境中,随着不同系统数量的增加,您拥有单个集成点的可能性越来越小。因此,您必须构建特定于每个集成系统的网关,以处理每个外部系统的特性。因此,为您的CRM系统构建一个网关,它将记录系统中的HTML解码,因为它将数据发送到CRM(以及您的CRM需要的其他特性......)。

答案 1 :(得分:0)

  

作为一种好的做法,文本在转发到Web服务之前是HTML编码的。

这不是一个很好的做法,只有当用户通过您网站上的控件(如富文本编辑器)实际输入HTML时,才应该这样做。 OWASP Guidelines仅推荐特定于上下文的输出编码(例如,HTML需要一组不同于JavaScript的编码规则)。

  

一个是Web应用程序,我们有HTML解码代码

网站是否只显示编码文本而浏览器正在进行解码?听起来像你的CRM系统是HTML编码已编码的HTML编码数据(因为它应该),这就是你看到编码字符的原因。

e.g。您存储为&的用户输入&。您的网站将其显示为&,由浏览器解析为&,CRM系统将其显示为&,并将其解码为浏览器&

你应该做什么

存储时不要对数据进行HTML编码 - 它应以纯文本格式存储。如果您的系统已经存在,则需要运行批处理以将HTML编码数据转换为普通数据。

将您的网站修改为HTML,以便在输出给用户时对从Web服务接收的数据进行编码。因此&存储将成为&。这意味着您的站点和CRM系统都正确编码纯文本数据,并且由于它们完全相同,因此不存在显示问题。