我有一个控制器,我专门用于AJAX的东西,即jquery调用一个特定的URL,它传回一些json。但是,此控制器中的某些操作会使用我们付费的服务,并且我不希望其他人能够在我的应用程序之外调用这些服务。
我已经看到this question限制了IP对控制器的访问,这一切都很好,但从技术上讲,这将被称为客户端,我不能使用这种限制。
那我该怎么做呢?或者我是以错误的方式去做的?
修改:将其作为POST而不是GET更好吗?
Edit2:我想我需要解释一下。 ajax调用是我的Web应用程序中的URL。该控制器用于(服务器端)从查找服务调用Web服务的操作。
答案 0 :(得分:1)
首先,您需要认识到,实际上没有办法阻止某人试图调用您的Web服务。即使有了IP限制,某人仍然可以通过伪装某人可能会做的IP地址来触发该方法,如果他们只是想弄乱你。
首先,您可能认为这对于将WebC应用程序用于Web应用程序是一种威慑,但实际情况并非如此。虽然从某个MVC Web应用程序中挖掘任何Web功能肯定更容易,因为该方法只能返回所需的数据,但没有什么可以阻止某人抓取呈现的HTML响应服务器端脚本。
考虑到这一点,您可以使用许多方法来限制对此特定功能的访问,但它们与任何其他Web应用程序MVC没有区别。但是,您使用哪一个完全取决于此第三方服务提供的数据类型。
如果你能给我一些关于这些服务的更多背景知识,我可以提供更具体的解决方案。
编辑:使用POST或GET方法在这种情况下完全没有区别。
答案 1 :(得分:1)
所以听起来你正在使用外部邮政编码查询服务(我假设你按请求付费)并且你不希望别人通过你的服务捎带来制作邮政编码查询请求,你将在那里收费?
您应该做的第一件事是检查您的服务提供商是否允许您指定推荐人的白名单。由于其中许多api意味着您的“api密钥”在某处使用javascript,因此通常仅用于允许来自特定主机或IP地址的服务请求(使用您的密钥)。
完成此操作后,您需要确保仅从您网站中的网页调用您的帖子代码查找操作。
您可以在客户端使用某种防伪标记执行此操作。 Phil Haack posted recently关于如何使用AJAX帖子。