【问题标题】:How should i properly encode a string containing HTML (in javascript)我应该如何正确编码包含 HTML 的字符串(在 javascript 中)
【发布时间】:2016-08-27 19:03:41
【问题描述】:

我的代码存在 XSS 脚本漏洞,我想防止这种情况发生。我正在使用 Jquery 编码器来防止 XSS 脚本。 以下是JS代码。

function test(response)
{

    $('#test').html( $.encoder.encodeForHTML(response));
}

响应的内容是这样的

response="<html><body><table><tr><td>DATA1</td><td>DATA2</td></tr></table></body></html>"

所以当我执行 $.encoder.encodeForHTML() 时,我预计输出将是一个表格(在使用编码器之前,我正确地获得了表格格式),但现在,响应字符串本身正在打印在 div 中元素。

有人可以帮我解决这个问题吗?我需要对响应(包含 HTML 代码)进行编码,以便将输出作为正确的表格格式。

我是不是在某个地方出错了,还是我使用了错误的函数进行编码?欢迎提出建议。

【问题讨论】:

  • 您的回复已编码。你为什么要它编码两次。

标签: javascript jquery encoding xss esapi


【解决方案1】:

在将其作为响应传递之前,只需使用 var encodedData = encodeURI(htmlDataToEncode);

【讨论】:

  • 所以我需要在传递响应之前对其进行编码...并在此处的函数中对其进行解码...然后使用 .innerHTML() 将其设置在 div 标签内?
  • 正确。您想使用 encodeURI() 对其进行编码,以便在从前端发送响应之前对所有特殊字符进行编码,使用您的“responseHandler”函数将其放回您需要的任何格式。然后,将格式化的返回/处理响应转储到您的 div 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 2011-10-10
相关资源
最近更新 更多