1

我有一个关于医疗保健领域的项目要完成,所以将使用或应该使用什么设计模式,因为系统应该足够强大,以至于没有黑客找到破解或窃取信息的方法。

the following technology is used
1.struts 1.2.9
2.mysql for backend
3.spring security.

所以如果可能的话,请建议我最好的设计和示例,因为我从未使用过设计模式。

所以请帮助我实现这一目标

问候。

4

4 回答 4

4

安全系统的一般准则。(不完整,只是我自己的观察)

永远不要相信信息,即使您只是从数据库中读取它,也不要假设它是 100% 安全的,并始终验证它是安全的(没有 sql 或脚本注入)。

不要将检查与存储分开,您永远不知道何时有人会复制粘贴缺少验证步骤的代码,尝试以一种没有检查就中止的方式进行存储。

永远不要相信默默无闻,始终验证权限和数据。

对权限使用一致的解决方案,这样就不会存在关于如何检查权限的歧义。

仔细考虑谁需要访问,并避免加载不应该存在和不需要的信息,如果它不在内存中,访问将更加困难。

使用具有内置权限检查的单独数据检索层,以便通过入侵第一个客户端层来获取数据更加困难。

分几个步骤考虑风险,将脚本标签存储在数据库中可能是安全的,但如果在有效会话中加载到页面中,该脚本会造成什么损害。

验证任何 ajax 调用、注入的 javascript(可能来自客户端计算机或插件中的病毒),否则可能会发送您自己的页面永远不会发送的命令,并在用户的上下文中发送它们。

并寻找有关如何构建安全系统的书籍,这里没有任何帖子可以涵盖所有内容,也没有书籍可以取代经验和规划。

并且按照规则生活,没有安全的系统,只有难以破解。

于 2012-10-11T06:42:26.673 回答
3

我认为您误解了术语设计模式。

设计模式通常使用通用或“模板”(注意,这是一个坏词,因为它也用于设计模式名称)代码解决方案,适合通用问题(对象创建、继承结构和对象行为)在面向对象的编程环境中,以与语言无关的方式增强可重用性。

没有设计模式可以确保系统不可破解 - 每种语言都有最佳实践,但除了严格的编程之外,还有很多其他方面可以保护系统。就像您可以使用最高级别的加密一事无成一样,当您的 root 密码仍然是默认密码时...

于 2012-10-11T06:51:45.617 回答
2

正如其他人已经提到的:从你的架构开始!尤其要弄清楚,

-您的应用程序可以具有哪些状态,如何支持程序员仅达到允许的状态(状态转换建模)

  • 如何验证传入的请求

  • 如何发现非法访问

  • 如何保护您的应用程序本身(网络服务器,...)

当您进行日常工作时,设计模式会为您提供帮助,但不能保护您免受架构中的安全漏洞的影响。架构会给你很多提示,哪些设计模式是有意义的。

至少我会想到一件事:Stuts 1.2.9。它不是最新版本(意味着不是最节省的版本),并且 struts 本身存在一些架构安全问题。当您使用 spring 时,为什么不在那里也使用其他更现代的组件呢?

于 2012-10-11T06:50:23.423 回答
1

你的问题很模糊。给我们一份您的主要组件清单,并要求我们提出“最佳设计”……您能给我们(很多)更多细节吗?

于 2012-10-11T06:24:42.770 回答