Javascript 仅允许主干访问我的API?

Javascript 仅允许主干访问我的API?,javascript,ruby-on-rails,json,api,backbone.js,Javascript,Ruby On Rails,Json,Api,Backbone.js,我有一个API,我正在为我的web应用程序使用,它位于我的网站外部。我正在使用的API的ToS明确表示,我不能以用户可以从我的数据生成反馈的方式向用户提供这些数据 我想为我的web应用使用主干网。但是,将主干与rails一起使用需要生成从控制器到主干的json响应。我知道这是必要的,但我希望这是安全的 我已经阅读了这里关于保护主干网实现的许多主题,但我找不到任何解决我的具体问题的主题。我有一些用户不需要登录就可以使用我的网站。这些用户可以看到我提供的数据。如果我使用主干网,这意味着他们可以向我的

我有一个API,我正在为我的web应用程序使用,它位于我的网站外部。我正在使用的API的ToS明确表示,我不能以用户可以从我的数据生成反馈的方式向用户提供这些数据

我想为我的web应用使用主干网。但是,将主干与rails一起使用需要生成从控制器到主干的json响应。我知道这是必要的,但我希望这是安全的

我已经阅读了这里关于保护主干网实现的许多主题,但我找不到任何解决我的具体问题的主题。我有一些用户不需要登录就可以使用我的网站。这些用户可以看到我提供的数据。如果我使用主干网,这意味着他们可以向我的控制器执行主干网正在执行的相同请求,并且有一个API可供他们编写机器人程序使用


有没有什么方法可以阻止用户查看我的javascript,看到我正在进行的调用,然后编写一个机器人?也就是说,我是否可以确保只有我的主干javascript可以与我的控制器通信,而其他任何人都无法获得JSONified响应?

简而言之,否:根据定义,所有javascript都必须在客户端计算机上运行,这意味着您无法阻止用户访问该JS(如果可以,他们将无法运行您的站点)

您可以使用Uglify或Google Closure compiler之类的工具“咀嚼”代码。这些工具将变量名(例如
var SECRET\u KEY=12345
)替换为较短、无意义的名称(例如
var AB=12345
),并执行其他可能使人难以理解您代码的操作

但是,这些工具只会使您很难找到密钥(例如,
12345
);密钥(以及应用程序的所有其他数据)仍然存在于源代码中

如果确实需要向用户隐藏某些数据,则必须将这些数据保存在服务器上(这意味着您必须始终间接地使用该API,但要与服务器通信,并让服务器与之通信)