angular.js - 单页应用的安全问题

浏览:52日期:2023-02-09

问题描述

背景后端

nodejs负责后端的逻辑, http服务器是用nginx

前端

使用angularjs搭建

结构

’+---------+ +-----------+ +--------+ +------+| | | | || | || +-------> +------>+----> || | | | || | || | | | || | || browser | | nginx | | nodeJs | | DB || | | | || | || <-------+ <------+<----+ || | | | || | || | | | || | |+---------+ +--+-----^--+ +--------+ +------+ | || | +--v-----+--+ | | | | | HTML | | | | CSS | | | | JS | | | +-----------+ ’说明

RESTFUL接口肯定是要做权限, 用是token的方式, 后端根据token来判断用户的权限, 然后返回数据。

问题

~~HTML这样的文件有必要加权限的认证吗?比如有些页面是不想直接让人看到的, 但现在很明显, HTML是不经过nodejs验证权限的。~~

那如果范围扩大到一些其他的静态文件, 比如一些doc文件, 那么这个权限判定应该怎么走?

问题解答

回答1:

把路由文件变量写在在服务器端在登录之后给浏览器发送第一个html的地方,登录的时候把这个用户能访问的文件都列出来,不能访问的设置为404,然后ng在设置路由的时候去读这些文件,如果用户直接访问不能去的路由,就会显示404页面了。也可以把用户标识码写在这个文件里,通过ng修改全局的ajax也不是不可以。

回答2:

我觉得你想多了,单页应用跟普通的网页,在安全性方面没有任何不同,都是用ajax方式和服务器端交互至于RESTful只是一种架构风格,不会因为用了这个风格,就对安全性造成什么性质上的改变

回答3:

http://stackoverflow.com/questions/15938730/require-authentication-for-directory-except-one-page-with-passport-js-node-j

你需要auth_basic

回答4:

对安全性是没有任何影响的

举个例子说,管理员页面 admin.html 普通用户就算可以构造url进入这个页面,由于没有合法token,各种操作和获取数据也是失败的.

由此可见,安全性只取决于后台restful对token的权限校验

相关文章: