【发布时间】:2012-01-23 00:31:28
【问题描述】:
我有一个 WCF 网络服务。我想将对该服务的调用限制在我的应用程序中的单个页面。此页面面向公众。有什么方法可以查看对该 Web 服务的调用来自何处?我想说 if (ThisRequestCameFromThisPage()) { goAhead(); }
谢谢!
【问题讨论】:
标签: wcf
我有一个 WCF 网络服务。我想将对该服务的调用限制在我的应用程序中的单个页面。此页面面向公众。有什么方法可以查看对该 Web 服务的调用来自何处?我想说 if (ThisRequestCameFromThisPage()) { goAhead(); }
谢谢!
【问题讨论】:
标签: wcf
您可以执行类似于 MAC 验证的操作。在服务器端,创建某种类型的加密令牌并将其嵌入隐藏的表单元素、javascript 变量等中——在服务器上呈现期间,将其嵌入页面中,以便可以通过将要检索的 javascript 检索它调用 WCF 服务。将令牌传递给调用,并在服务器端进行验证。
应该在加密令牌中的内容应该是客户端的 IP 地址 (REMOTE_ADDR) 和能够使令牌过期的日期/时间。令牌仅在服务器上加密和解密,因此一个合适的密钥应该可以保证数据的安全。
【讨论】:
您可以检查 Request 对象的引用者。但这很容易被欺骗,不应该依赖。
【讨论】: