我们是否应该在UI中显示时验证从数据库中获取的数据?
我在保存前验证客户端和服务器端的表单。
但是我应该在UI上展示之前验证数据吗?
答案 0 :(得分:1)
不,您应该验证输入并努力使您的验证逻辑可靠。因此,您将能够盲目地依赖您的输出。
有些人可能会反驳。例如,假设我已经定义了一个输入,有人在那里插入了一些JavaScript代码段。 当该文本来自数据库时,我会在将整个文本设置为输入之前对其进行验证吗?。 否,我不可能在我的UI层执行JavaScript。
有很多案例就像我上面描述的那样,在将数据绑定到用户界面之前,应该优先考虑防御行为......
创建/更新操作应存储先前已验证和/或已清理的数据。
总之,我发现某种偏执和坏习惯会验证输出:这可能意味着你的验证毕竟没有验证。
是的,当然!毕竟 - 黑客可能已经篡改了你的 数据库和存储的恶意代码在数据库表中 - 总是如此 假设数据不好 - 直到被证明是无辜的。总是验证, 永远不要假设数据或用户输入“有效”且无害
我觉得这有其他解决方案:
答案 1 :(得分:1)
我们是否应该在显示时验证从数据库中获取的数据 在用户界面中?
不,您的数据库中的数据应该已经过验证。在向下移动的每一层,数据在 UI、API 服务器和数据库中进行验证。最重要的验证级别是数据库架构,而 UI 和 API 验证层作为一种提前失败的方式,以避免进一步处理无效信息。
<块引用>但是如果黑客破坏了数据库中的数据怎么办?
数据库有办法确保数据的完整性和可靠性(架构、校验和、冗余、监控工具等)。 UI 和 API 层不需要在验证数据时提前失败。
答案 2 :(得分:0)
当数据在您无法完全控制的领域之间移动时,您应该始终对其进行验证。
例如,您无法控制用户可以输入的内容,因此您必须验证他们的数据。
当涉及到数据库时,如果其他人维护架构,如果使用您无法控制的流程添加数据,或者如果有新的业务需求,那么您应该验证数据,然后再将其显示给用户。