0

当客户注册网站时,我们想让他们知道用户名/电子邮件是否可用。我们有一个 httphandler 用于提供一个 jquery 脚本,该脚本向客户显示他们想要的用户名/电子邮件是否可用。

问题是:当您在 fiddler 中查看请求时,可以清楚地看到该服务正在被调用。它显示 /emlhandler.asmx?name=xxxxxxxxxxx@yyy.com

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

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

那么朋友们,你们如何保护您的站点信息,同时仍然允许 ajax 回调提供良好的用户体验?

谢谢。希思

4

2 回答 2

0

你在这里有点偏执。每个允许用户注册的网站都必须做类似的事情。您可以合理地做的一件事是在处理程序的处理过程中增加一点延迟(可能是 2 或 3 秒),以减少暴力攻击的可能性或容易程度。坦率地说,我认为没有人会打扰。

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

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

于 2012-07-20T20:37:09.387 回答
0

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

而且,由于未经您的授权,您无法从另一个域(XSS - 跨站点脚本)调用 JavaScript 服务,因此您将受到保护。

然而,这种技术会阻止恶意用户调用您的 Web 服务来发现用户名,但这不会阻止用户自动化一个过程来模拟用户在文本框中输入数据以强制调用服务,在这种情况下,也许您可以在X时间内只允许每个用户的多个请求。

您可以跟踪使用SessionWeb 服务中的对象的尝试次数

另一种方法是向您的网站添加重新验证码,但是如果您过去允许您的用户捕获用户名并且一旦他们写您就调用您的服务,这将降低响应水平。实施将要求您的用户编写自动生成的验证码以提交您的数据

于 2012-07-20T20:37:17.683 回答