限制访问Angular2 Web应用程序的后端?

时间:2017-03-18 08:52:02

标签: angular web-applications backend restful-authentication web-frontend

我将开发一个Web应用程序,我很可能会使用Angular2来完成它。由于应用程序需要在服务器上存储数据,因此我需要一个Web应用程序可以用来读/写的后端。

但是如何防止他人在我的网络应用程序之外使用它?这似乎不可能吗?通过查看源代码,攻击者可以看到我在前端使用的任何硬编码令牌,API密钥等。即使通过混淆和缩小JS源可以使其变得更加困难,它也永远不会以这种方式100%安全,对吗?

那么如何创建一个可供Web应用程序前端使用的后端,同时限制它只用于我自己的前端?

如果通常不可能,那么在某些条件下是否可以,例如,如果Web前端是从运行后端的同一服务器加载的话?我在启动前端脚本时动态生成服务器会话并动态生成前端的会话ID?但我想攻击者无论如何都可以轻松创建自己的客户端,他只需要确保首先加载官方客户端并从中提取会话ID?

1 个答案:

答案 0 :(得分:0)

我将与您分享我的个人经历和提示。

无论您是黑帽黑客还是服务器管理员,每条敏感数据都会以 0 1 <的形式出现在流中/强>秒。阻止攻击者获取数据的最佳机会是将它们限制在您的服务器上。但是,还有更多的东西......

影响数据安全的重要因素:

  • 后端安全
    • 如果您的攻击者可以从内部获取数据,那么您的所有努力都是徒劳的。确保没有安全漏洞,因此他们无法访问 root 终端。
    • 您的后端应该处理客户端可能发生的所有可能事件。有人可能已经使用自定义客户端发送了格式错误的数据包,您应该做好准备,不要分发敏感数据。
    • 你永远不应该发出比最低限度更多的数据。每个不必要的字节都可以为攻击者开辟新选项。
  • 运输层安全性
    • 可以轻松拦截数据包的字节流。你应该确保当他们拦截它时,他们无法说出来。
    • 使用 SSL 。它现在是必须拥有的 - 为您提供一个牢不可破的(当前......)加密。 (当然,前提是攻击者无法获得私钥 - 这会导致我们回到后端安全
  • 前端安全
    • 没有硬编码密钥,密码或任何敏感信息。每个人都可以看到它。
    • 混淆和压缩会降低逆向工程师的速度,但它不会阻止他们。除了框架之外,最好不要向他们提供任何有用的代码。
  • 验证
    • 如果您希望隐藏普通访问者的内容,则可以进行身份​​验证。我建议你反对自己制定解决方案,已经有很多框架和解决方案可以解决你遇到的大多数瓶颈问题。您应该看看JSON Web令牌(JWT) - 它们支持所有活动的编程语言并且是开放标准。 (https://jwt.io

至关重要的是,您不仅要在开发过程中将其视为软件工程,还要将其视为攻击者。你会看到,你的编码会变得更有效率。