我应该将 HTML 表单存储在数据库中吗

Posted

技术标签:

【中文标题】我应该将 HTML 表单存储在数据库中吗【英文标题】:Should I store an HTML form in a database 【发布时间】:2015-09-12 06:26:26 【问题描述】:

我想知道将 html 内容存储在数据库中是否被认为是不好的做法,或者它是否不安全。

我希望在我的系统中实现几个表单,这些表单将具有不同的字段并且可以定期更改。我想知道创建每个表单的唯一布局并将它们存储在我的数据库中是否是不好的做法。如果不入侵我们的数据库,用户将无法修改表单、向表单提交 HTML 或创建自己的表单。然后,在将数据提交到为每个表单创建的数据库表之前,我会获取用户提交的数据并验证其是否有特殊字符。我的计划是遍历请求参数,提取键值对,然后将经过验证的列表发送到存储过程或准备好的语句。字段名称将与数据库中的列名称具有相同或相似的名称。为了确保我有正确的顺序,我会将信息存储在 MAP 中,这样我就不需要希望信息不会以某种方式移动。

HTML 页面将与从客户端提交数据所需的 SQL 一起存储在数据库中的一个 clob 中。我可能只存储需要提交数据的表名并围绕它构建语句。

例子:

String tableName = "Form1"; //pulled from the database
String sqlLayout = "INSERT INTO ? ("+/*dynamically generated ? based on MAP keys*/+ ") VALUES ("+ /*dynamically generated ? based on MAP values*/ +")";
//Then proceed to fill in ? in the standard prepared statement way.

为了将 clob 加载到客户端页面,我将在 JSP 中的 div 上使用 jQuery 的 .load()。

我使用的 JavaEE 应用程序一年只发布一次。

【问题讨论】:

除此之外,每个表单都需要处理。对数据库所做的每一项更改都需要在 JavaEE 应用程序上重新编程。或者,您可以使用 JSON 文件。它的重量要轻得多,因为您不希望对其进行大量更改。 @doveyg 将存储在数据库中的表单将大不相同,以至于表单之间的布局不会保持相同。文件上传到数据库后,不应经常更改。只要所需字段仍然存在,对数据库的更改不会提示对表单进行更改。我试图以类似于实体 Bean 的方式制作每个表单,因为名称映射到数据库中的列 “文件”?尽管如此,我认为拥有许多未使用的字段是不好的做法。 【参考方案1】:

主要关心的是维护。如果您更改数据库列,则必须编辑存储表单和相应 SQL 代码的数据库记录的内容。

黑客不是问题。如何将表单呈现到页面中并不重要。最后还是 HTML 代码。

我会将它存储为 doveyg 提到的文本文件、html sn-p 或 JSON 文件。

【讨论】:

因为预期的表单名称代表数据库列并且SQL是动态生成的,所以SQL代码真的会改变吗?我可以看到维护是一个问题,但是如果表格更改太多,表格不会变成新表格吗?或者,如果每个表单变化很小,在向用户呈现内容时,会不会只是缺少可以稍后编辑或由系统处理的信息? 如果需要,新字段会自动添加吗?假设数据库是关系数据库,您将如何确定该列需要进入哪个表?也许我没有完全理解客户的要求,是否要求客户能够即时更改表单?

以上是关于我应该将 HTML 表单存储在数据库中吗的主要内容,如果未能解决你的问题,请参考以下文章

可以将演示数据存储在数据库中吗?

我应该将函数引用存储在 Redux 存储中吗?

我应该将 JWT 令牌存储在 IndexedDB 中吗?

我应该将 Firebase 凭据存储在 iCloud 中吗?

我可以在 Spring Boot 中测试我的存储库而不实际将测试数据保存在数据库中吗?

数据应该放在 redux 状态树中吗?