3

假设我们有一个 WCF 服务,就像 msdn 示例中的那个——c#,calculatorservice,所有服务设置都是默认的。

如果我是一名黑客并且我知道calculatorservice 很重要,我想让它停止工作,我可以简单地破解服务引用的代码并创建一个我自己的应用程序来创建10 个客户端。这些客户端会时不时地在calculatorservice上调用一个随机(非终止)方法,以保持会话处于活动状态,并且永远不会关闭。

现在很明显,因为所有 10 个会话都被占用了(或者无论最大会话数是多少),没有人可以访问计算器服务,它被完全阻止了!

我们如何保护我们的服务免受这种影响?

4

2 回答 2

3

如果您担心恶意黑客会用虚假会话阻塞您的服务,那么请不要使用会话!使用“每次调用”方法,并对您的用户进行身份验证,例如确保他们在您的 Windows/AD 域中,或者他们确实知道用户名/密码来调用您的服务。

如果恶意黑客为您的服务获得了有效的用户名/密码组合,那么您无法阻止他不断向您发送 10 或 20 个并发请求并阻塞您的服务 - 至少不会在 WCF 服务级别。WCF 提供服务节流行为来防止成千上万的恶意并发调用,以保护您的服务器不被淹没和崩溃。

如果您需要避开特定的 IP 或 IP 范围,您必须更早地解决这个问题 - 在您的路由器/防火墙中 - WCF 服务无法真正帮助您。

于 2009-12-04T21:46:42.950 回答
1

最好的办法是保护您的 WCF 服务

在本文中,我将向您展示如何在 WCF 服务上实现安全性。在 WCF 中实现安全性有许多选项和可扩展点。您还可以将特定产品(例如 Windows 2003 Server Authorization Manager)与 WCF 一起使用来实现解决方案的授权要求。开箱即用,WCF 支持 Windows 凭据、用户名令牌和 X.509 数字证书作为安全凭据。

于 2009-12-04T16:38:32.187 回答