即使数据不敏感,还是通过身份验证保护API的良好做法还是必要的?

时间:2018-12-07 15:34:31

标签: vue.js google-authentication

我的Vue.js应用程序通过Node.js后端与数据进行交互,可以访问敏感数据和非敏感数据。我已经能够保护节点服务器上的API,即使用google authentication API处理敏感数据(例如更新定价信息)的API。这要求用户必须先使用Google帐户登录,然后才能与这些API进行交互。

我现在正在尝试保护仅检索不敏感数据(例如名称,说明,我销售的产品的价格等)的API,以便甚至无法访问该API。直接进行某种形式的身份验证。即。如果我使用类似Postman之类的方法直接从API检索数据,而未通过身份验证,则将无法获取任何数据。但是,可以从Vue.app的一部分访问这些API,而无需登录。即。网站上的用户无需先登录即可查看产品,价格等信息。

为了保护这些“非敏感” API,我必须将一些“秘密”(例如API密钥)从Vue前端传递到Node后端。我相信从我已经完成的其他2篇文章(herehere)中,无法在运行时将环境变量传递到Vue App中(我正在使用Vue CLI 3) 。这使我不必将API密钥硬编码到前端代码中,这意味着它不再“秘密”或安全。

我本质上是在尝试执行“应用程序身份验证”,但无法在运行时在Vue中传递ENV变量,我不知道如何安全地执行此操作。

我在互联网上阅读的所有内容均指向以下任一:

  1. 在构建时将ENV变量传递给Vue(在这种情况下不安全);或
  2. 我想在运行时首先将ENV变量传递给Vue缺少了一些东西。

问题:我是通过保护不敏感的数据来过分思考还是使事情变得过于复杂?

1 个答案:

答案 0 :(得分:2)

这样做的一种方法是:

  1. 身份验证成功后,将生成一个JSON Web Token
  2. 将令牌发送回客户端(Vue应用)并将其存储在浏览器的本地存储中
  3. 要安全地在API路由上添加一个函数,该函数将检查请求中是否包含您在第2步中提供的令牌。您可以将令牌作为请求正文的一部分或标头发送。

这是保护API的简单而有效的方法。