阻止/限制用户不要在我们的应用程序外部调用您的Web服务

时间:2014-05-13 08:21:51

标签: jquery web-services security

让我直接回答这个问题。

我们有一个基于jquery的网站说(http://www.mywebsite.com),以及同一个域下的一组web服务,如(http://www.mywebsite.com/services/service1.asmx)。

现在,由于它是基于jquery的应用程序,对web服务进行了ajax调用,因此我们的Web服务的URL通过开发人员工具向公众公开。

我们是否可以知道是否只在我们的应用程序中调用Web服务,否则不执行它。

您的快速回复将非常适用。

1 个答案:

答案 0 :(得分:0)

我不是一个CRYPTO专家,这只是我过去做过的事。

由于您的应用程序实际上并未在您的应用程序中调用'但是在客户端的浏览器中,您无法通过开箱即识别来电的有效性。

我通常采用的方法是识别有效用户。

假设用户登录,或者他可能只是登陆您的索引。你做的是,你生成一个令牌 - 哈希。您的服务器知道该令牌适用的规则,但是急切的黑客/黑客不会。

假设您生成了session_id = 1q2w3e(请使用更长的内容并找到一些外部观察者难以猜测的规则。例如,您可以根据客户端IP创建哈希值秘密/盐[http://en.wikipedia.org/wiki/Salt_(cryptography)]只有你知道)。

现在,对于每次成功调用API,强制要求session_id是请求的一部分。然后,对于每个调用,授权该哈希检查它是否有效。如果是,请继续通话。

请注意,如果您不在HTTP上,对网络的监控可能会让黑客入侵会议劫持'通过观察session_id,并将其用于未来的呼叫。