我想就如何最好地设计一个包含以下内容的网站提供一些建议:
我担心,如果我对这3部分使用even,那么管理部分甚至可以被公共/空闲用户访问,因为基本上所有东西都存储在客户机上的静态文件中。这仅仅是服务器端的路由问题吗?我应该使用Jade/车把作为管理部分/登陆页面(帮助SEO)和角只是应用程序?在这方面是否有最佳做法?
发布于 2014-10-29 12:33:12
在构建角度应用程序时,这是我的总体哲学。如果有必要,我可以补充更多的说明。
所有实际的安全必须在服务器端实现.您在这个角度应用程序中放置的任何安全逻辑(它应该在那里)只是为了方便和可用性,而不是实际的安全性。
必须使用某种身份验证和授权方案在nodejs中访问REST调用,并且应该将401返回给任何请求数据或试图保存他们无法访问的数据的客户端。
同时,向用户展示不起作用的功能(即返回401)是个坏主意。因此,如果有一个按钮做一些用户不允许做的事情,你应该在他们有机会点击它并收到错误之前把它隐藏起来。
要做到这一点,您将需要发送有关当前通过身份验证的用户访问级别的客户端信息,并将特性/行为的可见性从其中删除。但是要明白,这很容易被复杂的用户所规避(例如,使用F12开发工具)。因此,这不是保护应用程序本身的东西,而是使您的应用程序更加友好的东西。
您必须决定将管理功能保密是多么重要。有一个用户不能使用的管理功能是一个秘密吗?还是只需要保护功能本身?如果您正在提供静态文件,那么聪明的用户可以从服务器获取任何这些文件。但这有什么价值呢?这些文件将不包含任何实际数据,单击按钮不会做任何事情(因为您在服务器上保护了api调用)。我们的黑客所能看到的就是一个有角的html模板。那不值钱。一些傻瓜花了那么多精力想弄清楚要下载的文件的名字,S/他看到的只是一堆胡须和ng-*指令。哇哦。
但是,如果您想要保护这一点,则需要对静态文件进行访问。你没有理由免费为他们服务。您可以在服务器上实现安全性,并在返回html和js之前检查授权。做这件事需要做更多的工作,所以这不值得,除非它是必要的,但这是可能的。
最后一个想法:你没有理由被限制为你的应用程序的一个角度应用。您可能需要尝试如下所示的设置:
在这里,您有两个水疗中心在同一个two服务器上服务。这种结构干净地分离了您的管理功能。从安全的角度来看,您仍然有所有相同的考虑,但这可能会使您的安全规则更容易实现。
https://softwareengineering.stackexchange.com/questions/260806
复制相似问题