1

我正在使用 Pagedown 构建一个包含用户生成内容的站点(尽管任何形式的 Markdown 都可以),并且我希望将原始 Markdown 和经过清理的 HTML 都存储在数据库中,以便用户可以返回并编辑原始输入. 不过,我不确定如何安全地重新显示原始降价而不容易受到 XSS 的攻击。例如,如果用户输入以下内容作为输入:

</textarea>
<script>MaliciousCode();</script>

这在最初输入时会很好,因为 Pagedown 会对其进行清理并将其转换为 HTML,因此该 HTML 会被发送到服务器(无论如何,它会再次删除未列入白名单的 HTML 标签,因为我不能单独信任客户端清理)。但是,当原始降价被发送回客户端进行编辑时,它变成:

<textarea class="wmd-input" id="wmd-input" name="wmd_area" >
</textarea>
<script>MaliciousCode();</script>
</textarea>

现在它很容易受到 XSS 的攻击。有人可以建议允许编辑存储的降价的网站如何使这个安全,或者我应该用什么更好的方法在这不会成为问题的情况下做到这一点?我知道 textarea 标签将被剥离,因为它没有被列入白名单,但这需要在将其转换为 HTML 之前从原始降价中剥离标签,从我所阅读的内容来看,这将搞砸原始降价并且不应该这样做。

4

0 回答 0