假设我们有一个 WCF 服务,例如来自 msdn 示例的服务 -- c#,calculatorservice,所有服务设置都是默认的。
如果我是一名黑客并且我知道 calculatorservice 很重要,我想让它停止工作,我可以简单地破解服务引用的代码并制作一个我自己的应用程序来创建 10 个客户端。这些客户端会时不时地在 calculatorservice 上调用一个随机(非终止)方法,以保持 session 事件,并且永不关闭。
现在很明显,因为所有 10 个 session 都已完成(或者无论最大 session 数是多少),没有人可以访问计算器服务,它被完全阻止了!
我们如何保护我们的服务不受其影响?
最佳答案
如果您担心恶意黑客会使用虚假 session 阻塞您的服务,那么请不要使用 session !使用“每次调用”方法,并对您的用户进行身份验证,例如确保他们在您的 Windows/AD 域中,或者他们确实知道可以调用您的服务的用户名/密码。
如果恶意黑客获得了您服务的有效用户名/密码组合,那么您无法阻止他不断向您发送 10 或 20 个并发请求并阻塞您的服务 - 至少不会在 WCF 服务级别发生。 WCF 提供服务节流 行为来防止 1'000 次恶意并发调用,以保护您的服务器免于被淹没和崩溃。
如果您需要避开特定的 IP 或 IP 范围,您必须更早地处理它 - 在您的路由器/防火墙中 - WCF 服务无法真正帮助您。
关于c# - 如何使 WCF session 更安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1848142/