如何在Phoenix中正确清理用户输入服务器端

时间:2015-09-17 10:19:19

标签: elixir phoenix-framework ecto

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

1 个答案:

答案 0 :(得分: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