我知道如何清理用户输入客户端,但我也会在服务器端执行此操作。我知道正确的地方是使用changeset
,但到目前为止,我找不到如何正确执行<script></script>
标记和其他潜在有害内容(如SQL注入)的示例。
因为我想允许用户更改HTML内容并将该HTML保存在数据库中,所以我无法使用标准验证,并在模板中显示raw
HTML。
有人可以举个例子吗?
答案 0 :(得分:3)
phoenix_html
库默认清理用户输入:
<%= "<script>alert("hi")</script>" %>
将显示为:
<script>alert("hi")</script>
必须使用raw/1:
覆盖<%= raw "<script>alert("hi")</script>" %>
将显示为
<script>alert("hi")</script>
如果您想自己(例如,在EEx模板之外),可以使用html_escape/1。