asp.net - 使用 ASP.NET 表单例份验证进行 IP 检查

标签 asp.net forms-authentication

我正在 asp.net 网站上实现简单的身份验证。使用基本表单例份验证几乎是完美的:我将身份验证模式设置为表单,并在 web.config 中有一个简短的凭据部分,并使用一个简单的登录 aspx 页面,该页面使用 FormsAuthentication.Authenticate() 和 FormsAuthentication.RedirectFromLoginPage()。

但是,我想添加对某些客户端 IP 地址的额外检查。如果请求来自某个 IP 地址,我希望自动授权该请求,而不是将该请求重定向到登录页面。有没有一种简单的方法来扩展或覆盖内置表单 AuthenticateRequest?我的另一个选择是创建自己的 HttpModule 来执行此操作,但似乎如果我这样做,我就会失去 FormsAuthentication 方法的良好功能及其与凭据部分的交互。有什么建议吗?

最佳答案

首先,您确定想要这样做吗?如果有人能够猜出您未验证的 IP 地址范围,那么 IP 欺骗将是攻击您网站的理想方法!即使他们只知道地址范围,这也使得暴力攻击变得微不足道。

其次,您只需检查登录页面中的 IP 地址并从那里重定向...不需要 HttpModule。但是,再说一次,如果我是你,我就不会这样做。

更新: R G - 有几件事。我的想法是,您应该在重定向之前进行 Authenticate() 调用。这将避免重定向环回。但看起来你甚至不需要它,因为......

其次,根据您下面的评论(在 Ben 的帖子中),您将在 Web 服务中使用此代码。如果是这样的话,难道不能将Web服务放在Web.Config页面中作为允许访问的页面吗?只需添加以下内容:

<location path="YourWebService.asmx">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>

这就是我们所做的,尽管我们确实要求 Web 服务的用户在我们处理 Web 服务请求之前发送一个“神奇短语”(它也是 SSL 加密的)。

关于asp.net - 使用 ASP.NET 表单例份验证进行 IP 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1162441/

相关文章:

asp.net-mvc-4 - 针对 AD 的 MVC4 表单例份验证

c# - asp.net 4.0 中的解码 - 特殊字符

asp.net - 在 .NET 页面中进行分页的最佳方法

javascript - 使用 JavaScript 的表单例份验证

c# - 授权属性不适用于角色

asp.net-mvc - 跨应用程序进行表单例份验证的 ServiceStack 失败...为什么?

asp.net - 我应该如何/应该保留 ClaimsPrincipal?

c# - 我应该创建单元测试基地吗

c# - LoginUser_Authenticate 和 LoggingIn 事件不会触发

asp.net - 如何使模态弹出窗口随页面滚动其内容?