مسدود کردن آدرس IP با استفاده از IHttpModule در Asp.Net
نویسنده: مجید مقصودی پور
تاریخ: ۱۳۹۱/۰۴/۲۵ ۱۸:۲۸
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public class IPBlockModule : IHttpModule
{
public IPBlockModule()
{
// TODO: Add constructor logic here
}
public void Dispose()
{
//Dispose
}
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(Application_BeginRequest);
}
private void Application_BeginRequest(object source, EventArgs e)
{
HttpContext context = ((HttpApplication)source).Context;
string ipAddress = context.Request.UserHostAddress;
if (IsBlockedIpAddress(ipAddress))
{
context.Response.StatusCode = 403;
context.Response.Write("Forbidden : The server understood the request, but It is refusing to fulfill it.");
}
}
private bool IsBlockedIpAddress(string ipAddress)
{
//Here I have stored Ip addresses in String[]. you can also Store in database.
string[] IPs = { "117.196.35.121",
"117.196.35.122",
"117.196.35.123",
"117.196.35.124",
"127.0.0.1"
};
foreach(string IP in IPs)
{
if(IP == ipAddress)
return true;
}
return false;
}
}
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
<httpModules>
<add name="IPBlockModule" type="IPBlockModule"/>
</httpModules>
</system.web>
</configuration>
private static bool IsBlockedIpAddress(string ipAddress)
{
string[] ips = {
"117.196.35.121",
"117.196.35.122",
"117.196.35.123",
"117.196.35.124",
"127.0.0.1"
};
return ips.Any(ip => ip == ipAddress);
}
سلام دوست عزیز
آیا بلاک کردن ip کار دقیقی است؟ از این نظر که دهها نفر در اینترنت ممکن است با یک ip به سایت ما وصل بشن و این کار باعث میشه همه اونا بلاک بشن
با درود و عرض ادب
استاد نصیری
سایت ما هر چتد وقت یک بار با ipهای مختلفی هک میشود
همه جور محدودیت و enjection هم اعمال کردم.
به نظرتون این مشکل رو چی کار باید کرد.؟
ممنون از راهنمایی تون
PM> Install-Package DNTCommon.Web.Core
public void Configure(IApplicationBuilder app)
{
app.UseAntiDos(); public void ConfigureServices(IServiceCollection services)
{
services.Configure<AntiDosConfig>(options => Configuration.GetSection("AntiDosConfig").Bind(options));