3

我知道如何清理用户输入客户端,但我也会在服务器端进行。我知道使用它的正确位置,changeset但到目前为止,我找不到如何正确处理<script></script>标签和其他潜在有害内容(如 SQL 注入)的示例。因为我想允许用户更改 HTML 内容并将该 HTML 保存在数据库中,所以我不能使用标准验证,而是raw在模板中显示 HTML。有人可以给我一个例子吗?

4

1 回答 1

3

phoenix_html库默认清理用户输入:

<%= "<script>alert("hi")</script>" %>

将显示为:

&lt;script&gt;alert("hi")&lt;/script&gt;

这必须用raw/1覆盖:

<%= raw "<script>alert("hi")</script>" %>

将显示为

<script>alert("hi")</script>

如果您想自己执行此操作(例如在 EEx 模板之外),您可以使用html_escape/1

于 2015-09-17T11:43:47.773 回答