2014-03-04 68 views
0

我的应用程序中有一个下拉列表,我使用Ajax调用填充数据,如下所示。这工作得很好,我的网页API URL为“http://example.com/Service.svc/json/getairports使用简单的令牌保护REST服务

$(function() { 
    $.getJSON("http://example.com/Service.svc/json/getairports", {}, function (data) { 
     $("#airport-departure-modal, #destination-airport-modal").html("") 
     $.each(data, function (index, element) { 
      $("#airport-departure-modal, #destination-airport-modal").append("<option id=" + element["AirportCode"] + ">" + element["AirportName"] + "</option>"); 
     }); 
    }); 
}); 

但我担心的是安全性,因为任何人都可以使用查看源文件或开发工具查看该网址。所以我想引入一个令牌并将它传递给像“http://example.com/Service.svc/json/getairports?token=SECUREKEY”这样的服务,但我不知道这是否能解决问题,因为安全密钥在视图源中也是可见的。 所以我的问题是我如何保持安全密钥在客户端不可见或只有在启动ajax调用时才动态传递?

仅供参考,我将在生产中使用HTTPS,以便通过电线嗅探得到照顾。也不是这样的,这个服务只会在同一个应用程序中使用,尽管Web API服务可能托管在一个单独的节点上。

请注意,是否可能有一些替代方案,但上述方案的简单解决方案。我知道其他先进的机制,如OAuth,HMAC,亚马逊S3等,但我只想有一个简单的解决方案。

回答

0

你究竟想要解决什么问题?你想阻止用户以编程方式调用你的API吗?如果您的浏览器可以获得某些东西,那么具有view-source功能的用户也可以获得一些东西,这是徒劳的。实际上,这听起来像你想阻止CSRF。

This answer应该会有所帮助。