2013-08-19 104 views
0

受限制的页面,我们一直使用服务器端模板(.JSP)的web应用程序,但现在我们采用了棱角分明的一个大项目。它开始使用客户端模板的意义,虽然一些安全问题已经上升...与客户端模板

是否有可能在所有情况下阻止用户访问某个模板,只有在他登录后才能查看?看起来很容易,只需使用开发人员工具或萤火虫将其破解即可。

控制此问题的一种方法是从服务器返回视图,但是我不会放弃Angular的所有好处吗?

回答

1

取决于框架,你可以从服务器限制这一点,你就不会丢失任何角度的好东西。

将模板添加到Angular的方式是使用ng-viewng-include

ng-view模板在路由定义期间配置。由于这些模板是从服务器加载的,因此您始终可以控制这些模板的加载。

ng-include也可以采用服务器端模板,并且可以使用AngularJS强制执行相同的限制。

我们使用ASP.Net MVC,所以在ASP.Net中,您可以将AuthorizeAttribute放在控制器(服务器端)方法上,该方法将视图返回给控制器返回给客户端的东西。

还要记住,一旦模板被加载,将通过角的模板缓存被缓存,因此它不会是牵强,直到页面刷新(浏览器导航\ F5)

+0

谢谢,这听起来像我应该使用Spring的安全性以匹配ASP.Net的AuthorizeAttribute一个小小的研究之后。我会看看如果我能使它工作。 – mfreitas

1

一个想法,你可以利用$cookie和$ cookieStorage Angular API。

通过身份验证的用户必须在cookie中的特殊值。然后,您可以在特定的控制器中添加一个检查,以查看该值是否存在,而不是 - 限制或重定向到另一个认证视图。

+0

听起来像它可以工作,但不幸的是我不能使用cookies,因为我的国家发布了规则。 – mfreitas

+0

哇。这我不知道。是否该政策限制存储信息在cookie或cookie本身是不允许的。 – basav

+0

据推测它是关于其中包含的信息,因为这是一个银行业务应用程序,规则更加严格,而且它也是我们不想真正与客户进行沟通的主题。他们似乎很害怕它。 – mfreitas

1

假设某人足够狡猾,可能难以防止模板本身被看到。当您加载主登录页面时,我假设您的服务器将提供完整的Angular Javascript单页面应用程序。狡猾的人可以通过加载的Javascript来查看路由,然后明确地调用这些模板以在Angular应用程序之外下载这些模板。我认为大多数Angular应用程序只是使模板公开访问。在这种情况下,所有需要知道的人都是获得他们的模板名称。

虽然这听起来有点可怕,但好处是填充模板的数据应该更容易保护。如果您是从服务器上运行的服务让你的数据,那么你就可以确保用户在实际登录(并具有适当的角色)提供的数据之前。

这意味着狡猾的人可能很容易获得空模板,但是如果安全性在服务器上正确完成,那么他们应该很难获取数据来填充该模板。

这页有关于如何应用安全性的AngularJS应用中的一些很好的例子:http://frederiknakstad.com/authentication-in-single-page-applications-with-angular-js/