【发布时间】:2009-04-03 09:20:49
【问题描述】:
我有一个通过 javascript (jquery) 执行的网络服务,用于从数据库中检索数据。我想确保只有我的网页可以执行这些 web 方法(即我不希望人们直接执行这些 web 方法 - 例如,他们可以通过查看 javascript 的源代码来找到 url)。
我打算做的是向所有 webmethods 添加一个“Key”参数。密钥将存储在网页中的隐藏字段中,并且在请求网页时由网络服务器动态设置值。键值仅在 5 分钟内有效。这样,当需要执行 webmethod 时,javascript 会将密钥传递给 webmethod,webmethod 将在执行任何需要执行的操作之前检查密钥是否有效。
如果有人想直接执行 webmethods,他们将没有密钥,这将使他们无法执行它们。
您对此有何看法?有更好的解决方案吗?您认为我的解决方案有什么问题吗?
更多信息:对于我正在做的事情,访问者没有登录,所以我无法使用会话。我知道如果有人真的想打破这一点,他们可以解析 html 代码并获取隐藏字段的值,但他们必须定期执行此操作,因为密钥每 x 分钟更改一次......这当然是可能的,但是希望对他们来说会很痛苦。
编辑:我正在做的是一个网络应用程序(而不是一个网站)。数据通过网络方法(+jquery)检索。我想阻止任何人使用我的数据构建自己的 Web 应用程序(如果他们可以执行 Web 方法,他们可以这样做)。显然这对他们来说是有风险的,因为我可以随时更改网络方法。
我可能会选择推荐人选项。它并不完美,但很容易实现。我不想像你们中的一些人所说的那样花太多时间在这上面,如果有人真的想打破它,他们无论如何都会找到解决方案。
谢谢。
【问题讨论】:
-
会话和登录不是一回事
标签: web-services