防止误用ASP.net Handler

时间:2012-07-20 20:26:50

标签: asp.net security httphandler

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

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

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

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

所以朋友们,您如何保护您的网站信息并仍然允许ajax回调提供出色的用户体验?

感谢。 荒地

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

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

然而,这种技术可以防止恶意用户调用您的Web服务来发现用户名,但这不会阻止用户自动化进程来模拟用户在文本框中输入数据以强制调用该服务,例如,您可能只允许每个用户在 X 时间内提出大量请求。

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

另一个方法是向您的网站添加re Captcha,但如果您曾经允许用户捕获用户名并且一旦他们写信给您的服务,这会降低响应级别。实施将要求您的用户编写自动生成的验证码以提交您的数据