前端应用程序的安全性

时间:2017-12-02 01:07:29

标签: javascript angular security authentication frontend

我对与用户身份验证(前端和后端)有关的任何事情都是新手。我正在使用Angular 2/5构建应用程序。我发现杰森沃特莫尔this tutorial我将尝试适应我的需要。我在评论中看到,Jason解释说,对于您希望前端安全的网站,建议在单独的前端应用程序中进行身份验证,然后在用户拥有后将用户重定向到完整的应用程序登录。原因是没有前端应用是安全的,因为用户可以改变变量以查看受路线保护或其他方式保护的路线。这些数据在后端仍然是安全的,但您有一些功能,您不希望公众知道前端,例如您如何分析用户输入的数据。

我的问题是,在确保前端应用程序安全方面,这是不可能的绝对事实?这是有道理的,而且我预感到这是真的,但我想知道是否有办法至少让人很难看到守卫路线。 (就像路线保护员询问服务器令牌是否有效?...但是你可以修改功能总是返回true,对吗?嗯......)

[编辑]延迟加载可以在这里发挥作用吗?是否可以构建一个服务器仅在用户登录后才可用的模块/路由?

2 个答案:

答案 0 :(得分:1)

前端代码和后端之间的区别在于前端是在访问网站的任何人的计算机上运行,​​而后端是在通常数百英里之外的服务器上运行。如果它是前端代码,那意味着它在用户计算机上,这意味着它们可以访问它。你可以偷偷摸摸地做到这一点,只有一个知识渊博的黑客"实际上可以看到任何重要的东西,但隐藏前端代码是不可能的。他们的计算机需要它,因此用户可以访问它。

答案 1 :(得分:1)

尝试保护一些未经身份验证的用户的前端代码是一个非常合理的想法,而延迟加载实际上可能有助于此。

一些想法:

  • 仅允许某些(经过身份验证的)用户下载某些前端文件确实会增加安全性,因为这些代码无法分析潜在的外部攻击者。因此,没有凭据的人将很难在应用程序的这些部分中找到像XSS这样的东西,这是一个实际的安全性好处。
  • 类似的东西可以通过混淆来实现,但显然,永远不会那么好,因为永远不会将代码泄露给未经身份验证的用户。
  • 这样做会使开发(整个过程)变得更加复杂,复杂性通常不是安全的好朋友。
  • 很多攻击者不是外部的。在客户端代码中获取敏感信息并不是一个好主意,业务逻辑本身就非常敏感。该应用程序的任何有效用户都可能成为“攻击者”,如果客户端上有此代码,则需要使用此代码。
  • 因此,最佳做法是将此类业务逻辑放在服务器上。
  • 但最终,它取决于您想要承担的风险。需要考虑的因素包括将所有信息全部放在服务器上的价格(资源数量),如果此信息丢失给对手可能造成的损失,发生这种情况的可能性(即有5个可信用户,或150000)未知的),以及你的风险偏好。