m.trust() 的安全问题

Security Concerns with m.trust()

我正在尝试使用 diff library 来为我的页面记录用户帖子的编辑历史记录。该库为我提供了一个很长的 JSON 数据,用于差异存储在我的数据库中,我正在使用相同存储库的 PHP 函数将其转换为带有一些 HTML 代码的表格视图。这是示例输出:

<table class="diff-wrapper diff diff-html diff-inline">
    <thead>
        <tr>
            <th colspan="2">Differences</th>
        </tr>
    </thead>
    <tbody class="change change-rep">
        <tr data-type="-">
            <th class="sign del">-</th>
            <td class="old">Donec rutrum, odio id tempus consequat, nunc nisi pulvinar dolor, ac faucibus massa erat non est. Integer blandit, eros quis sodales vulputate, erat ex euismod nisl, gravida vestibulum nibh elit pretium quam. Mauris turpis tortor, lacinia vitae purus eget, vulputate testing mollis felis.</td>
        </tr>
        <tr data-type="+">
            <th class="sign ins">+</th>
            <td class="new">Donec rutrum, odio id tempus consequat, nunc nisi pulvinar dolor, ac faucibus massa erat non est. Integer blandit, eros quis sodales vulputate, erat ex euismod nisl, gravida vestibulum nibh elit pretium quam. Mauris turpis tortor, lacinia vitae purus eget, vulputate testing mollis felis
                <ins> testing</ins>.
            </td>
        </tr>
    </tbody>
</table>

然后我从 URL(如 /post/history/{id})请求此 HTML 数据,使用 m.trust() 函数呈现响应。该 diff 库还在创建 JSON 数据之前从用户输入中清理 HTML,因此只有 <table><tr><td><tbody>,<thead>,<ins>,<del> 标记在前端呈现。

我的问题是我需要担心这种方法吗? 用户能否在到达 m.trust() 函数之前进入此 HTML 输出并输入一些未处理的 HTML? 是否可以播放URL 在事情发生之前的反应?

一旦代码通过 HTTP 提供给用户,用户就可以用它做任何他们想做的事情:例如,这就是 Facebook 在控制台中记录一条消息以警告没有经验的用户不要使用 dev 的原因工具来完成别人要求他们做的事情。但考虑到用户可以编写和执行他们想要的任何类型的危险代码,我不会担心这与 Mithril 有什么关系。

简而言之,只要您相信代码的来源,您就无需担心 - 它是由您服务器上的后端代码生成的,因此足以满足这些目的。

如果您对本领域的关注有更多疑问,不妨在秘银聊天室中提问:https://gitter.im/mithriljs/mithril.js?source=orgpage