javascript - 使用 Meteor 进行外部 API 调用的安全实践

标签 javascript meteor twitter-oauth

我在控制台中进行了测试,无法访问这些全局变量,但很好奇这是否可以在 Meteor 中执行:

if (Meteor.isServer) {
  Meteor.startup(function () {
    Twit = Meteor.npmRequire('twit')
    T = new Twit({
        consumer_key:         'cYiYGQ0BsN4DCM2'
      , consumer_secret:      'uU6g0RqcDkkHwasaibQ5zi6Zpgtb'
      , access_token:         '324050hbjhVvdgi0xEUHKreca9u7dTo'
      , access_token_secret:  'gCNBxu3NAQ9dNbhbvU6KwX'
    });
  });

如果这不是最佳实践,请提供一个答案,该答案仍然允许我在 Meteor.methods 调用中访问变量“T”。谢谢!

最佳答案

if (Meteor.isServer) {...}

防止在客户端执行,但是除非文件驻留在 /server 目录中,否则尽管未执行,客户端仍然可以使用它。这意味着任何浏览从您的服务器下载的 JavaScript 的人都可以观察到您的 key !!!

我相信你会同意这很糟糕。

首先,不建议您将 key 放入源代码中(由于很多原因太长,无法在此列出),但如果您这样做(作为快速破解),请将带有 key 的文件放入 /server 目录,因此世界无法观察到它们。

阅读Meteor.settings,了解如何避免将 key 放在代码中并在与源分开的文件中进行外部管理。

使用 Meteor.setting 你的代码看起来像这样;

文件:$(projecthome)/server/twitter.js:

   Meteor.startup(function () {
     Twit = Meteor.npmRequire('twit')
     T = new Twit({
         consumer_key:         Meteor.settings.TWIT.key
       , consumer_secret:      Meteor.settings.TWIT.secret
       , access_token:         Meteor.settings.TWIT.token
       , access_token_secret:  Meteor.settings.TWIT.token_secret
     });
   });

关于javascript - 使用 Meteor 进行外部 API 调用的安全实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31443901/

相关文章:

javascript - 我如何检测文本区域的任何变化?

javascript - 为什么 Iron-Router onBeforeAction 逻辑不影响 DOM?

android - 使用 Android AccountManager Twitter 凭据创建 Twitter4J AccessToken

java - 获取 json user_timeline api twitter 1.1

javascript - 如何使用 DOM 可用的所有输出来迭代 JavaScript for 循环

javascript - 如何处理浏览器刷新、后退按钮

meteor - 使用 Meteor 和 percolate 的 google-api 包访问 Youtube API

javascript - 通过 Meteor 中的路由器填充模板

java - 使用 Twitter 从 Java Web 应用程序进行注册和身份验证

javascript - 页面 URL 更改时 CSS 不生效