【发布时间】:2010-11-19 15:27:41
【问题描述】:
我正在 WCF 中构建一个复杂的公共 Web 服务,该服务将电子邮件发送到特定地址,类似于联系表单,但具有一些功能。 使用 jQuery,我从文本框中获取数据,使用 Ajax 和 json,我将字符串发送到 Web 服务以继续发送。
现在,有什么好方法可以保证它的安全吗?
我的意思是.. 该服务是公开的,因此有人可以访问它并开始在此地址上发送垃圾邮件。我可以限制用户只能从正确的网站使用网络服务吗?
谢谢。
【问题讨论】:
我正在 WCF 中构建一个复杂的公共 Web 服务,该服务将电子邮件发送到特定地址,类似于联系表单,但具有一些功能。 使用 jQuery,我从文本框中获取数据,使用 Ajax 和 json,我将字符串发送到 Web 服务以继续发送。
现在,有什么好方法可以保证它的安全吗?
我的意思是.. 该服务是公开的,因此有人可以访问它并开始在此地址上发送垃圾邮件。我可以限制用户只能从正确的网站使用网络服务吗?
谢谢。
【问题讨论】:
如果 WCF 服务托管在 IIS 中,则您只能允许来自特定 IP 地址的调用,请查看 IIS 下的目录安全设置。
【讨论】:
到目前为止,最简单的方法是让您的 Web 服务需要某种类型的访问密钥才能运行操作。
像 base64 编码的 GUID 这样简单的东西就可以了。它甚至不必改变。只需添加一个名为“AccessKey”或类似的参数。让您的应用通过它并让服务验证它是否良好。
另一个想法是让 Web 服务检查 http 标头以查看它是否来自您授权使用它的页面。
这些都不是完美的。第一个意味着您的“密钥”将在您发送给客户端的 html 中。第二个可以被欺骗。
就个人而言,我可能不会在这个级别上打扰,而只是记录服务正在做什么。如果服务的流量开始超过您认为的应有的流量,那么我会研究减轻它的方法。很有可能,鉴于它是一项服务,您不会发现任何问题。
【讨论】: