首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >深度防御与干式防御

深度防御与干式防御
EN

Stack Overflow用户
提问于 2011-03-01 04:07:18
回答 2查看 178关注 0票数 3

“深度防御”的原则规定,应该在多个地方强制实施约束,以便如果一段数据绕过或滑过一层,它将被下一层捕获。一个很好的例子是在web应用中--你将验证放在客户端的javascript中,放在服务器端的代码中(PHP/Ruby/ASP/随便什么),然后你把这些规则放在数据库中(例如外键约束)。这样,任何通过Javascript验证的数据都会被服务器端捕获。任何通过服务器验证的数据都会被数据库约束捕获。

然而,这似乎违反了DRY (不要重复自己)原则。在这里,有三个地方重复了相同的验证规则。我知道有一些方法可以生成客户端javascript,这样它就可以执行服务器端的验证。我的问题是,如何整合数据库约束和服务器端代码?有没有办法生成代码,让它自动实施数据库约束?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-01 04:16:47

DRY (不要重复自己)是一个源代码,最佳实践原则,基本上意味着:不要复制代码,因为这样做会降低可维护性并增加出现错误的机会。

在数据库中强制引用完整性并不是对DRY的真正违反,因为:

  • 数据库不是
  • 站在自己的

上的源代码的一部分,除了客户端视图之外,还可以通过许多其他方式访问和修改

  • 。例如,查询和报告引擎
票数 1
EN

Stack Overflow用户

发布于 2011-03-01 04:16:48

为此,我们让一个模块成为“安全规则”的所有者,然后为它创建一个AJAX接口,以便服务器端代码直接调用它,然后前端UI组件调用AJAX接口,但它们都与同一个模块对话。通过这种方式,访问规则只存在于一个地方(安全模块),而您仍然在任何地方强制执行这些规则。这有一个额外的优势,那就是将规则保留在客户端可下载的代码之外。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5146990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档