繁体   English   中英

前端应用程序的安全性

[英]Security in front-end applications

对于一般的用户身份验证,无论是前端还是后端,我都是新手。 我正在使用Angular 2/5构建应用程序。 我已经找到了Jason Watmore的这个教程 ,我将尝试适应我的需求。 我在评论中看到,Jason解释说,对于您希望前端安全的网站,建议在单独的前端应用程序中进行身份验证,然后在用户拥有后将用户重定向到完整的应用程序登录。原因是没有前端应用是安全的,因为用户可以改变变量以查看受路线保护或其他方式保护的路线。 这些数据在后端仍然是安全的,但您有一些功能,您不希望公众知道前端,例如您如何分析用户输入的数据。

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

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

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

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

一些想法:

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

暂无
暂无

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

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