【问题标题】:Prevent direct access to JSON Web Service防止直接访问 JSON Web 服务
【发布时间】:2009-06-18 06:14:59
【问题描述】:
我有一个通过在页面中插入一段 javascript 来使用的 web 服务。 Javascript 扫描页面中的某个字符串并向我的 ASP.NET JSON WebService 发出请求。然后 javascript 使用 JSON 来显示一些内容。
我最想做的是阻止任何人直接访问我的 JSON 服务。
使用 jQuery Ajax 请求访问服务。
这可能吗?
最好的问候,
TheLorax
【问题讨论】:
标签:
jquery
ajax
web-services
json
security
【解决方案1】:
我的经验主要是 PHP,所以您可能需要将这个概念转换为 ASP.NET ;)
如果代码是同一个 Web 应用程序的一部分(或在同一个服务器实例上)并且我想锁定它,例如,它位于身份验证系统后面,我在会话中存储一个变量,说明用户已通过身份验证.您也许可以对 ASP.NET 和会话状态做同样的事情。取决于 Web 服务或任何提供 JSON 的服务是否可以访问该用户的会话状态。
另一种选择是在服务器端创建某种散列密钥,并使用私钥播种。通过您的请求将其传递给也知道私钥的 JSON 服务。此解决方案的问题在于,确保 JSON 服务正确解密需要一些协调,并且人们仍然可以通过其他方式使用 JSON 服务。
【解决方案2】:
不是真的。
如果您有一个已知的用户组,您可以通过发布 API 密钥等来阻止其他人访问您的服务。
但是您的有效用户将能够以他们喜欢的任何形式访问您的 JSON。
您可以尝试混淆事物,但这可能不值得。
而且由于您无法关闭它,您应该接受 Web 2.0 的混搭精神,并且如果有人访问您的服务并以您从未想过的创新方式呈现信息,您会很高兴。这应该会让您的服务更受欢迎。
如果它最终以某种方式让您付出了实际收入,您必须依靠法律手段来阻止它,因为可以规避技术措施。