使用简单令牌保护REST服务



我的应用程序中有一个下拉列表,我使用Ajax调用填充数据,如下所示。这很好用,我的Web API URL是"http://example.com/Service.svc/json/getairports">

$(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>");
});
});
});

但我担心的是安全性,因为任何人都可以使用查看源代码或开发人员工具查看此URL。所以我想带来一个代币并将其传递给服务,就像"http://example.com/Service.svc/json/getairports?token=SECUREKEY"但我想知道这如何解决问题,因为安全密钥在视图源中也可见。所以我的问题是,我如何保持安全密钥在客户端不可见,或者只有在启动ajax调用时才动态传递?

仅供参考,我将在生产中使用HTTPS,这样就可以小心地通过电线进行嗅探。此外,尽管Web API服务可能托管在单独的节点上,但该服务将仅在同一应用程序中使用。

请告知上述情况是否有一些替代但简单的解决方案。我知道其他高级机制,如OAuth、HMAC、AmazonS3等。但我只想有一个简单的解决方案。

您到底想解决什么问题?是否要阻止用户以编程方式调用API?如果你的浏览器能得到一些东西,那么拥有视图源功能的用户也能得到——所以这是徒劳的。实际上,听起来你想阻止CSRF。

这个答案应该很有帮助。

最新更新