隐藏API调用中的查询字符串

时间:2017-02-10 15:14:15

标签: javascript azure-api-apps azure-api-management

我从JavaScript调用Azure API应用程序。我需要根据应用程序在(mydonain.org parameter1,对于mydomain.com parameter2)执行的域,通过API向后端发送参数。但是我需要从用户隐藏此参数(当用户右键单击并查看JavaScript代码时,他们将无法看到参数)。

如何通过API应用程序将此参数从JavaScript发送到后端,并使用户不可见?

$.getJSON("api/searchItems/" + myparam,
   function (Data) {
   ...
  });

myParam根据应用程序的执行位置有不同的值。如果它在mydomain.com上执行则为1,如果它在mydomain.org上执行则为2等。 但此代码未获批准,因为您可以找出参数是什么,并直接调用api。

1 个答案:

答案 0 :(得分:2)

此请求打破了黄金法则:如果它位于客户端,那么无论您尝试多少,客户都能找到它,期限。

你确实有几个选项,这是主观的,因为没有给出很多细节。

首先,您可以对域进行哈希处理,但客户仍然可以轻松注入自己的JavaScript代码并确定您要对哪个域进行哈希处理。

其次,您是否在服务器上验证客户端数据?您是否有办法将域与某个会话(实际上不是100%保证)相关联,并拒绝欺骗性域请求?

我不确定将域名作为字符串传递可能存在的安全问题(如果有的话)。我认为这不与表单结合(可能在列表中查看特定域的数据)。

最后,您使用的服务器端编程语言应该有一种方法可以让您知道域名是什么,假设您没有从域B请求域A的信息。