如何防止使用 asp.net 从不同的 ip 访问网站
How to prevent access to the web site from different ip with asp.net
我想创建一个安全层。例如:
User = John (Signed in) has a Session["ipadress"]
Hacker = Unknown (using same session_id) has a same Session["ipadress"] or new one? i need an information..
嗯,我想检查一个 IP 地址,如果它与注册和登录用户不同,则重定向到 sessioninactive.aspx 页面。
可以在global.asax做吗?
我会在检查用户的地方这样做。例如在登录页面上。
你可以简单地做这样的事情:
string sUserHostaddress = Request.UserHostAddress;
然后您可以将您的 Seesion["ipaddress"](您可以用相同的方式填充该会话变量)与 sUserHostAddress 进行比较。
不确定模仿 session_id 是什么意思?我不会依赖 cookie 来管理经过身份验证的状态。我认为重要的方面是您的登录是安全的。密码加密。我总是会根据实际使用的 SessionID 检查会话 cookie,如果它们不匹配,我会怀疑(可以编写代码来解决这个问题)。
如果用户使用在会话期间更改 IP 地址的代理,您可能 运行 会遇到问题。在我的日志文件中看到类似的内容。
希望对您有所帮助。
在Global.asax
中添加以下方法
将 IP 保存到 Session_Start 上的会话:
protected void Session_Start()
{
string userIp = HttpContext.Current.Request.UserHostAddress;
Session["ipadress"] = userIp;
}
在每次请求时,查看请求 IP 是否与保存在会话中的 IP 相同:
protected void Application_AcquireRequestState()
{
string userIp = HttpContext.Current.Request.UserHostAddress;
if (Session["ipadress"] != null)
{
string originalUserIp = Session["ipadress"].ToString();
if (originalUserIp != userIp)
{
Response.Redirect("sessioninactive.aspx");
}
}
}
这将在 Global.asax:
中完成工作
protected void Application_BeginRequest(object sender, EventArgs e)
{
var ip = HttpContext.Current.Request.UserHostAddress;
//TODO: handle correct list
List<string> validIps = new List<string> { "::1" };
if (!validIps.Contains(ip))
{
HttpContext.Current.Response.StatusCode = 403;
HttpContext.Current.Response.StatusDescription = "Forbidden";
HttpContext.Current.Response.End();
}
}
我想创建一个安全层。例如:
User = John (Signed in) has a Session["ipadress"]
Hacker = Unknown (using same session_id) has a same Session["ipadress"] or new one? i need an information..
嗯,我想检查一个 IP 地址,如果它与注册和登录用户不同,则重定向到 sessioninactive.aspx 页面。
可以在global.asax做吗?
我会在检查用户的地方这样做。例如在登录页面上。 你可以简单地做这样的事情:
string sUserHostaddress = Request.UserHostAddress;
然后您可以将您的 Seesion["ipaddress"](您可以用相同的方式填充该会话变量)与 sUserHostAddress 进行比较。
不确定模仿 session_id 是什么意思?我不会依赖 cookie 来管理经过身份验证的状态。我认为重要的方面是您的登录是安全的。密码加密。我总是会根据实际使用的 SessionID 检查会话 cookie,如果它们不匹配,我会怀疑(可以编写代码来解决这个问题)。
如果用户使用在会话期间更改 IP 地址的代理,您可能 运行 会遇到问题。在我的日志文件中看到类似的内容。
希望对您有所帮助。
在Global.asax
中添加以下方法将 IP 保存到 Session_Start 上的会话:
protected void Session_Start()
{
string userIp = HttpContext.Current.Request.UserHostAddress;
Session["ipadress"] = userIp;
}
在每次请求时,查看请求 IP 是否与保存在会话中的 IP 相同:
protected void Application_AcquireRequestState()
{
string userIp = HttpContext.Current.Request.UserHostAddress;
if (Session["ipadress"] != null)
{
string originalUserIp = Session["ipadress"].ToString();
if (originalUserIp != userIp)
{
Response.Redirect("sessioninactive.aspx");
}
}
}
这将在 Global.asax:
中完成工作 protected void Application_BeginRequest(object sender, EventArgs e)
{
var ip = HttpContext.Current.Request.UserHostAddress;
//TODO: handle correct list
List<string> validIps = new List<string> { "::1" };
if (!validIps.Contains(ip))
{
HttpContext.Current.Response.StatusCode = 403;
HttpContext.Current.Response.StatusDescription = "Forbidden";
HttpContext.Current.Response.End();
}
}