我正在设计一个系统,它需要将来的扩展性才能使用某种许可系统。我想知道飞重模式是否是实现这个的好选择。我现在不负责实现,因为它只是一个原型,而且我们也没有对任何需要正确系统的部件进行原型化。但是,由于对需要权限管理的部分的未来扩展性的需求,接口需要是坚实的。这意味着,它最终将是一个思想实验,而不是真正的一部分,我要做的工作。但是,我确实需要能够解释并证明我在应用程序的这一领域的设计是正确的。
为了支持使用are,您可以通过一个令牌类来定义权限,就像飞权模式中所表示的那样。如果您处理的是数百个用户,这将在一定程度上简化用户所拥有的权限的处理和颁发,以及用户在系统中操作所需的权限;以及分配给所有用户的权限的内存使用。在我心目中的系统中,某种工厂方法将在施工时分配所需的权利。
由于我没有真正的设计经验与安全的头脑,我有一个偏执的思路,我无法确定它是否合理,安全明智。共享指针可能被“邪恶入侵者”劫持,以获得他们不应该获得的权利。这是反对使用一种一直困扰我的轻量级的主要论点,尽管“如何”还没有定义,而且我也不知道有人会如何完成它。(没有安全意识方面的经验,也没有工作经验。然而,除了模式的安全使用之外,我并不是真的在寻找安全性方面的讲座,除非是出于动机,并且与这个问题明显相关)
问:在软件系统的设计中,飞重模式是否是一种适当的模式来管理用户(或其他一些“分发”数据类型)的权限表示,而该软件系统需要通过设计来确保安全?在处理权限时,使用飞重对象表示权限是否比其他模式(我也可以使用装饰链(尽管这会占用更多内存)带来更大的安全风险?
发布于 2014-03-31 01:41:50
如果您试图设计接口,为什么要担心实现细节?即使在实施的层面上,我也觉得担心是否使用飞重是不成熟的。飞重是一个内存空间优化,如果你不知道你用了多少空间开始,你怎么知道它会节省你的空间?
您没有提到您将使用权限跟踪的东西类型,所以我假设它的数量与unix样式的用户、组和其他的读/写/执行位数差不多。这总共是9位;取决于您如何分割它,它将容纳2或3个字节。每个飞行重量将需要一个指针,可能在32-64位,或4至8字节。因此,即使您不需要为权限对象分配更多的空间(而且您会这样做),您也可能增加了内存需求。
当然,如果您的权限对象足够大,则可能不是这样,但是在这种情况下,除非您的大型对象中存在大量的复制,否则您仍然无法从飞磅中获得任何信息。你知道你的对象之间会有很多重复,而且它们会比较大吗?如果你还在搞清楚界面的话,可能不会。
我不能真正告诉你安全性,但在我看来,如果有人已经渗透到你的系统,以至于他们可以覆盖任意指针,他们就已经可以控制你的程序了。
https://softwareengineering.stackexchange.com/questions/234248
复制相似问题