我有一个通过javascript(jquery)执行的web服务来从数据库中检索数据.我想确保只有我的网页才能执行这些网页方法(即我不希望人们直接执行这些网页方法 - 他们可以通过查看javascript的源代码来查找网址).
我打算做的是为所有web方法添加一个'Key'参数.密钥将存储在隐藏字段的网页中,并且当请求网页时,Web服务器将动态设置该值.键值仅对5分钟有效.这样,当需要执行web方法时,javascript会将密钥传递给webmethod,webmethod会在做任何需要做的事情之前检查密钥是否有效.
如果有人想直接执行web方法,他们就不会拥有使他们无法执行的方法.
你对此有何看法?有更好的解决方案吗?您是否预见到我的解决方案有任何问题?
更多信息:对于我正在做的事情,访问者没有登录,所以我不能使用会话.我知道,如果有人真的想打破这个,他们可以解析html代码并获得隐藏字段的值,但是他们必须定期这样做,因为密钥每隔x分钟就会改变......这当然是可能的但是希望对他们来说是一种痛苦.
编辑:我正在做的是一个Web应用程序(而不是一个网站).通过Web方法(+ jquery)检索数据.我想阻止任何人使用我的数据构建自己的Web应用程序(如果他们可以执行Web方法,他们就可以).显然这对他们来说是一个风险,因为我可以随时更改网络方法.
我可能会选择推荐人选项.它并不完美,但很容易实现.我不想花太多时间在这上面,因为有些人说如果有人真的想打破它,他们无论如何都会找到解决方案.
谢谢.
好吧,它没有任何技术上的错误,但你的假设是"它们没有能使它们无法执行它们的密钥"是不正确的,因此整个事物的安全性是有缺陷的.
检索隐藏字段的值并使用它来执行方法非常简单.
我会为您节省大量时间和挫折:如果用户的浏览器可以执行该方法,则确定的用户可以.你无法阻止它.
话虽如此,还有关于你为什么要这样做的更多信息?背景是什么?也许还有其他东西可以实现你的目标,我们可以建议,如果我们知道更多:)
编辑:那里没有更多的信息,但我会用它运行.您的解决方案根本不会增加安全性,并且会在维护和错误方面给您带来麻烦.它还会给您的用户带来麻烦,因为他们会有一个"不可见"的时间限制,可以在页面上执行操作.根据你到目前为止告诉我们的内容,我会说你最好什么也不做.
你想在这里保护什么样的方法?你为什么要保护他们?
ND