2012-07-20 60 views
0

当客户注册一个网站时,我们想让他们知道用户名/电子邮件是否可用。 我们有一个httphandler,用于提供一个jquery脚本,用于向客户显示他们所需的用户名/电子邮件是否可用。防止滥用ASP.net处理程序

问题是: 当您在小提琴手中查看请求时,可以清楚地看到服务被调用。 它显示/[email protected]

从处理程序中,返回简单的0或1以指示名称/地址是否可用。

我担心的是,这似乎是一个重大的安全问题,对于没有经验的人来说很容易被利用来发现网站上的所有用户。

因此,朋友们,你如何保护你的网站信息,并仍然允许ajax回调提供一个很好的用户体验?

谢谢。 希思

回答

0

你在这里有点偏执。每个允许用户注册的网站都需要做类似的事情。你可以合理地做的一件事是为处理程序的处理添加一个轻微的延迟(可能是2或3秒)以减少暴力攻击的可能性或缓解。坦率地说,我不认为有人会打扰。

另一种选择是在用户注册实际激活之前忽略重复的电子邮件并发送验证电子邮件。如果新用户尝试使用现有电子邮件,则原始电子邮件所有者会收到验证并可以取消或忽略该验证。但我不推荐这个。

我想说绝大多数我用过的网站都会马上说“这个电子邮件地址已经注册了......你忘记了密码了吗?”只知道给定网站上已经使用的电子邮件地址本身并不代表安全漏洞。

0

一种可能的解决方案是仅启用POST请求该方法。

而且由于您无法在未经您授权的情况下从其他域的JavaScript(XSS - 跨站点脚本)调用服务,您将受到保护。

但是,这种技术可以防止恶意用户调用您的Web服务来发现用户名,但这不会阻止用户自动化一个进程来模拟用户在文本框中输入数据以强制对服务进行调用,在这种情况下,或许您可以允许每个用户在一段时间内处理多个请求。

你可以继续使用Session对象从您的网络服务的尝试次数的轨道

另一个approac将是一个re Captcha添加到您的网站,但是这会降低响应的级别,如果你使用的允许您的用户可以捕获用户名,只要他们写信给您,即可致电您的服务。实施将要求您的用户编写自动生成的验证码以提交您的数据