首页 > 解决方案 > ASP.NET 网络服务安全?

问题描述

我们有一个 asp.net 公共网络服务供现有客户订购产品:

https://www.example.com/webservices/customers/webservice.asmx?op=OrderProduct

一些领域是:

  <CustomerEmailAddress>string</CustomerEmailAddress>
  <CustomerPassword>string</CustomerPassword>
  <ProductCode>string</ProductCode>
  <Quantity>string</Quantity>
  <Color>string</Color>

我们使用 CustomerEmailAddress 和 CustomerPassword 来检查客户是否合法。

问题:我们如何阻止非客户尝试猜测 CustomerPassword 和 CustomerEmailAddress(包括这样做的恶意自动化脚本)?

我们曾考虑在 100 次错误密码尝试后锁定客户帐户,但如果某些脚本试图猜测它,那么合法客户可能会阻止他们的帐户(即使不是他们试图访问它)。

我们还考虑过按 IP 地址计算访问尝试,但我们不确定是否有人可以伪造 IP 地址。此外,我们不确定如果他们将脚本分发到数千台计算机会发生什么。

更新

我认为与其关注或惩罚特定的 CustomerEmailAddress,不如简单地关注一个反复弄错 CustomerEmailAddress 或 CustomerPassword 的 IP 地址。例如,100 次失败后,封锁 IP 一天。然后一周等。

这样,特定的 CustomerEmailAddress 就不会阻止他们的帐户。

标签: c#asp.net.netvb.netweb-services

解决方案


两因素身份验证也会有我的投票,最好的安全性。

如果无法使用电子邮件/短信/文本,则可以选择基于时间的一次性密码。

100 次尝试 IP 阻止,可以临时设置:

前 100 次失败尝试锁定 X 分钟。

第二个 100 失败尝试锁定 X*2 分钟。

等等

如果成功,重置计数


推荐阅读