繁体   English   中英

angularjs ui路由器解析不安全吗?

[英]isn't the angularjs ui-router resolve insecure?

如果我当前状态

.state("display",
    {url:"/display",templateUrl:"display.ng.html",
    controller:"DisplayController",
    controllerAs:"displayController"})

并且我为状态添加了一个解决方案,以便只有登录的人才能访问该路由,例如:

resolve: {
    "currentUser": ["$meteor", function($meteor){
      return $meteor.requireUser();
    }]
  }

*摘自http://angular-meteor.com/tutorial/step_08

这不会造成安全漏洞吗?

任何人都不能在他们的浏览器中打开控制台并“重写”路由,从而不需要用户吗?

如果我们针对提出的问题,“是”将是简短的答案。 答案背后的真相是,它并不是为了确保安全而设计的,因为这是不可能的。 用户/客户端完成页面下载的第二秒,从技术上讲,他们可以完全访问您提供给他们的所有内容。 无论您采取了多少客户端预防措施,人们都可以保存您的文件,根据需要对其进行编辑,然后使用这些文件重新加载页面。 他们可以选择所需的路线,运行所需的javascript等。

这是什么意思? 永远不要信任用户。 永远。 如果您不希望某人看到某些东西,则不要在响应中完全包含它。 如果将其隐藏在客户端,则不会阻止用户打开源查看器,而只是在文件中进行查找即可。 即使您精简了所有内容,但只要有足够的动力,那里的某人就能找到所有内容。

API调用,套接字通信等同样适用。客户端可以发送他们想要的任何内容。 如果他们知道URL,预期数据和发送方法,则只需创建自己的假客户端并发送他们想要的任何东西。 这就是为什么客户端验证仅出于UI原因(将框标记为红色,通过拒绝表单节省时间等)非常有用,但是您必须重新验证并重新检查服务器端的所有内容。

tl; dr-是的,这是“不安全的”,但这不是角度/ ui路由器的故障。 这就是客户端开发的方式。 如果您不希望没有访问权限的用户看到某些内容,请不要将其完全包含在您发送给他们的数据/文件中。 对其进行检测并将其剥离到服务器端。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM