1

我正在使用引导工具提示来显示用户生成的内容。但我也使用该选项html: true,因为我想在工具提示中启用 html 以便能够使用某些格式。

假设我有一个用户内容如下:

<script>alert('e')</script>

它被服务器端转义,放入一些div的title属性中,并像这样发送到浏览器:

<div title="&lt;script&gt;alert('e')&lt;/script&gt;">Bla</div>

但是浏览器会对 html 实体进行转义,当我在 div 上调用 tooltip 函数时,它将具有以下 title 属性值:

<div title="<script>alert('e')</script>">Bla</div>

这将导致警报被触发。所以我需要的是两次转义 title 属性的内容,以便它像这样发送:

<div title="&amp;lt;script&amp;gt;alert('e')&amp;lt;/script&amp;gt;">Bla</div>

当调用 tooltip 时,它仍然看起来像这样:

<div title="&lt;script&gt;alert('e')&lt;/script&gt;">Bla</div>

所以警报不会被执行。

在 Rails 中执行此操作的正确方法是什么?我在这里缺少什么吗?请不要告诉我使用html: false工具提示模块的选项,因为我需要 html 格式。

4

1 回答 1

0

我会尝试 HTML:

<div title="<%= escape_javascript("<script>alert(\"e\");</script>") %>">Bla</div>

但是我想知道为什么您要允许用户将脚本标签注入工具提示中?

于 2013-06-10T01:00:33.460 回答