我有一个API,我正在使用我的网站外部的网络应用程序。我明确消费的API的ToS说我无法以这样的方式向我的用户提供这些数据,因为他们可以生成数据源。
我想在我的网络应用中使用骨干网。但是,使用带有rails的主干需要我从控制器到主干生成json响应。我知道这是必要的,但我希望这是安全的。
我已经阅读了很多有关保护骨干网实施的主题,但我找不到任何可以解决我的具体问题的主题。我的用户不需要登录即可使用我的网站。这些用户可以看到我提供的数据。如果我使用骨干网,这意味着他们可以向我的控制器执行与骨干网正在执行的相同的请求,并且有可用的API来编写机器人以供使用。
有什么方法可以阻止用户查看我的javascript,看到我正在制作的电话,并编写机器人?也就是说,我可以确保只有我的主干javascript可以与我的控制器通信而其他任何人都无法获得JSONified响应吗?
答案 0 :(得分:0)
简而言之,不是:根据定义,所有JavaScript都必须在客户端的计算机上运行,这意味着您无法阻止用户访问该JS(如果可以的话,他们不会&#39 ; t能够运行你的网站。)
你可以" munge"您的代码使用Uglify或Google Closure编译器等工具。这些工具将变量名称(例如var SECRET_KEY = 12345
)替换为较短的,无意义的名称(例如var AB = 12345
),并执行其他可能使某人难以理解您的代码的事情。
但是,这些工具只会让您很难找到您的密钥(例如12345
);密钥(以及所有其他应用程序的数据)仍将存在于源代码中。
如果您确实需要隐藏用户的某些数据,则必须将这些数据保留在服务器上(这意味着您必须始终间接使用该API,但要与您的服务器通信并拥有服务器与它交谈。)