Django- CSRF 和 POSTing 一个 Html 表单

Django- CSRF and POSTing an Html form

在 Django 视图中,我将一个 Html 表单(带有一些 Html 来自我的数据库的实际字符串)放入一个 Html 模板,带有标签:{{ injected_form|safe }}。这成功地显示了表单,但是我在发布它时遇到了问题:

Forbidden (...) CSRF token missing or incorrect.

(我知道这是适当的 Django 行为,因为我在表单本身内部没有 CSRF 标记 tag/field。顺便说一句,数据库中自定义 Html 表单字符串的原因是它们可以由实际用户制作)

我可以实施的解决方案是 TheBronx 对问题 here 的回答。这似乎只是做

的情况
<form method="post">
    {% csrf_token %}
    ......
</form>

不可能!这个问题有解决方案吗?

我已经想出了如何在没有相关 Django 模型的情况下 handle/receive POST,但我没有预见到提交它们时会出现 CSRF 问题 :( 任何帮助将不胜感激

我不确定为什么不可能。当然,存储在数据库中的表单本身不需要包含 <form> 标签,因此您可以轻松地自己使用这些标签并添加 CSRF 令牌。无论如何,这似乎更安全,因为您确实应该自己确保表单 POST 的目的地。

但我必须说,这整个方法似乎是错误的。允许用户将原始 HTML 添加到您的数据库并将其直接(未转义)输出到模板永远不会真正安全。允许他们在 HTML 中指定表单字段似乎是各种注入攻击的秘诀。

而是考虑让他们从一系列字段中进行选择,然后自己从中构建表单。