用page.Request.UserHostAddress获取的客户端,能不能被客户端造假?代理不是问题,用代理上也是有IP的。是问能不能造假,比如我随便写个字符串就可以赋值给page.Request.UserHostAddress

解决方案 »

  1.   

    本帖最后由 net_lover 于 2012-09-13 12:39:56 编辑
      

  2.   

    只要别人不是代理的 就还算靠谱吧。。不过header中的东西 都可以自定义你可以试下,好多都可以取IP 的,,,你把header中的所有的都输出来看下
      

  3.   

     不靠谱简单的HTTP代理都跳过了
      

  4.   

    public static string GetUserIP()
                {
                    string User_IP;
                    if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
                    {
                        User_IP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
                    }
                    else
                    {
                        User_IP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
                    }
                    return User_IP;
                }
      

  5.   

    匿名代理获得的是代理的ip
    内网用户获得的是网关的ip
      

  6.   

      /// <summary>
            /// 获取真实IP
            /// </summary>
            /// <returns></returns>
            public static string GetRequesterIP()
            {
                string Result = String.Empty;
                Result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];            if (null == Result || Result == String.Empty)
                {
                    Result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
                }
                if (null == Result || Result == String.Empty)
                {
                    Result = HttpContext.Current.Request.UserHostAddress;
                }
                if (null == Result || Result == String.Empty)
                {
                    return "0.0.0.0";
                }            return Result;
            }
    貌似再怎么写也无法取到代理后的真实IP吧。只能取到现在所用的IP。。
      

  7.   

    只有少数无聊的人去改IP  再说 你获取的IP又不能找到具体的pc机 现在都是很多人公用一个IP好么 然后分出许多虚拟ip  你要获取mac地址 才行