我们有多个系统相互交互。有一个面向公众的网站,客户输入文字。有一个Web服务将文本输入CRM数据库。作为一种好的做法,文本在转发到Web服务之前是HTML编码的。我们有两个应用程序阅读本文,一个是Web应用程序,我们有HTML解码代码。另一个是第三方CRM,它没有解码代码,因此它向用户显示HTML字符。
我正在尝试找到一种防止用户查看HTML字符的解决方案。 CRM是第三方应用程序,在生产中,因此每个人都不愿意对CRM进行任何更改。
还有其他解决方案吗?一种建议是在将文本输入CRM数据库之前解码文本。这是一个很好的解决方案还是其他任何一个。
答案 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系统都正确编码纯文本数据,并且由于它们完全相同,因此不存在显示问题。