最近悟出來一個道理,在這兒分享給大家:學歷代表你的過去,能力代表你的現在,學習代表你的將來。我們都知道計算機技術發展日新月異,速度驚人的快,你我稍不留神,就會被慢慢淘汰!因此:每日不間斷的學習是避免被淘汰的不二法寶。
十年河東十年河西,莫欺少年窮!
無聊,隨便來點代碼,刷刷成就感@
1、SQL注入攻擊防范之關鍵字過濾
#region sql注入攻擊 public static string[] words = { "select", "insert", "delete", "count(", "drop table", "update", "truncate", "asc(", "mid(", "char(", "xp_cmdshell", "exec", "master", "net", "and", "or", "where" }; public static string CheckParam(string Value) { Value = Value.Replace("'", ""); Value = Value.Replace(";", ""); Value = Value.Replace("--", ""); Value = Value.Replace("/**/", ""); return Value; } public static string CheckParamThrow(string Value) { for (int i = 0; i < words.Length; i++) { if (Value.IndexOf(words[i], StringComparison.OrdinalIgnoreCase) > 0) { string pattern = string.Format(@"[\W]{0}[\W]", words[i]); Regex rx = new Regex(pattern, RegexOptions.IgnoreCase); if (rx.IsMatch(Value)) throw new Exception("發現sql注入痕跡!"); } } return CheckParam(Value); } /// <summary> /// 查找是否含有非法參數 /// </summary> /// <param name="Value"></param> /// <returns></returns> public static bool CheckParamBool(string Value) { for (int i = 0; i < words.Length; i++) { if (Value.IndexOf(words[i], StringComparison.OrdinalIgnoreCase) > 0) return true; } return false; } #endregion
2、C#獲取公網IP的方法
#region IP地址處理 /// <summary> /// 取得客戶端真實IP。如果有代理則取第一個非內網地址 /// by flower.b /// </summary> public static string IPAddress { get { string result = String.Empty; result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (result != null && result != String.Empty) { //可能有代理 if (result.IndexOf(".") == -1) //沒有“.”肯定是非IPv4格式 result = null; else { if (result.IndexOf(",") != -1) { //有“,”,估計多個代理。取第一個不是內網的IP。 result = result.Replace(" ", "").Replace("'", ""); string[] temparyip = result.Split(",;".ToCharArray()); for (int i = 0; i < temparyip.Length; i++) { if (IsIPAddress(temparyip[i]) && temparyip[i].Substring(0, 3) != "10." && temparyip[i].Substring(0, 7) != "192.168" && temparyip[i].Substring(0, 7) != "172.16.") { return temparyip[i]; //找到不是內網的地址 } } } else if (IsIPAddress(result)) //代理即是IP格式 return result; else result = null; //代理中的內容 非IP,取IP } } string IpAddress = (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null && HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != String.Empty) ? HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] : HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; if (null == result || result == String.Empty) result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; if (result == null || result == String.Empty) result = HttpContext.Current.Request.UserHostAddress; return result; } } /// <summary> /// 判斷是否是IP地址格式 0.0.0.0 /// </summary> /// <param name="str1">待判斷的IP地址</param> /// <returns>true or false</returns> private static bool IsIPAddress(string str1) { if (str1 == null || str1 == string.Empty || str1.Length < 7 || str1.Length > 15) return false; string regformat = @"^d{1,3}[.]d{1,3}[.]d{1,3}[.]d{1,3}$"; Regex regex = new Regex(regformat, RegexOptions.IgnoreCase); return regex.IsMatch(str1); } #endregion
3、站點URL基本信息處理
#region 站點的基本url信息 /// <summary> /// 獲取當前網站根地址 http://wwww.baidu.com /// </summary> public static string GetRootUrl() { return "http://" + HttpContext.Current.Request.Url.Host; } /// <summary> /// 獲得網站的根目錄的url,比如http://www.baidu.com /// </summary> /// <returns></returns> public static string getWebSite() { string website = "http://" + HttpContext.Current.Request.Url.Authority; return website; } /// <summary> /// 設當前頁完整地址 /// 比如:http://www.jb51.net/aaa/bbb.aspx?id=5&name=kelli /// </summary> /// <returns></returns> public static string getTotalUrl() { string url = HttpContext.Current.Request.Url.ToString(); return url; } /// <summary> /// 取得網站根目錄的物理路徑 /// </summary> /// <returns></returns> public static string GetRootPath() { string AppPath = ""; HttpContext HttpCurrent = HttpContext.Current; if (HttpCurrent != null) { AppPath = HttpCurrent.Server.MapPath("~"); } else { AppPath = AppDomain.CurrentDomain.BaseDirectory; if (Regex.Match(AppPath, @"\\$", RegexOptions.Compiled).Success) AppPath = AppPath.Substring(0, AppPath.Length - 1); } return AppPath; } #endregion
4、檢索文件、文件夾
#region 檢索文件 static System.Collections.ArrayList alst; /// <summary> /// 檢索文件 /// </summary> /// <param name="dir">目錄</param> /// <param name="Filetype">文件類型 .css .jpg</param> /// foreach (string f in readlist(Server.MapPath(@"/Manger/")))//xiaobaigang為文件夾名稱 ///{ /// Response.Write(f); /// //this.ListBox1.Items.Add(f); ///} public static void GetFiles(string dir,string Filetype) { try { string[] files = Directory.GetFiles(dir);//得到文件 foreach (string file in files)//循環文件 { string exname = file.Substring(file.LastIndexOf(".") + 1);//得到后綴名 // if (".txt|.aspx".IndexOf(file.Substring(file.LastIndexOf(".") + 1)) > -1)//查找.txt .aspx結尾的文件 if (Filetype.IndexOf(file.Substring(file.LastIndexOf(".") + 1)) > -1)//如果后綴名為.txt文件 { FileInfo fi = new FileInfo(file);//建立FileInfo對象 alst.Add(fi.FullName);//把.txt文件全名加人到FileInfo對象 //if (File.Exists(fi.FullName)) //{ // File.Delete(fi.FullName); //} } } } catch { } } /// <summary> /// 獲取CSS文件 /// </summary> /// <param name="dir"></param> public static void GetFiles(string dir) { try { string[] files = Directory.GetFiles(dir);//得到文件 foreach (string file in files)//循環文件 { string exname = file.Substring(file.LastIndexOf(".") + 1);//得到后綴名 // if (".txt|.aspx".IndexOf(file.Substring(file.LastIndexOf(".") + 1)) > -1)//查找.txt .aspx結尾的文件 if (".css".IndexOf(file.Substring(file.LastIndexOf(".") + 1)) > -1)//如果后綴名為.txt文件 { FileInfo fi = new FileInfo(file);//建立FileInfo對象 alst.Add(fi.FullName);//把.txt文件全名加人到FileInfo對象 //if (File.Exists(fi.FullName)) //{ // File.Delete(fi.FullName); //} } } } catch { } } public static string[] readlist(string path) { alst = new System.Collections.ArrayList();//建立ArrayList對象 GetDirs(path);//得到文件夾 return (string[])alst.ToArray(typeof(string));//把ArrayList轉化為string[] } public static void GetDirs(string d)//得到所有文件夾 { GetFiles(d);//得到所有文件夾里面的文件 try { string[] dirs = Directory.GetDirectories(d); foreach (string dir in dirs) { GetDirs(dir);//遞歸 } } catch { } } #endregion
5、C#時間處理
#region 時間處理 /// <summary> /// 用於統計時間段內的天數 /// </summary> /// <param name="DateTime1">時間一</param> /// <param name="DateTime2">時間二</param> /// <returns></returns> public static int DayDiff(DateTime DateTime1, DateTime DateTime2) { TimeSpan ts1 = new TimeSpan(DateTime1.Ticks); TimeSpan ts2 = new TimeSpan(DateTime2.Ticks); TimeSpan ts = ts1.Subtract(ts2).Duration(); return ts.Days; } public static int MinutesDiff(DateTime DateTime1, DateTime DateTime2) { TimeSpan ts1 = new TimeSpan(DateTime1.Ticks); TimeSpan ts2 = new TimeSpan(DateTime2.Ticks); TimeSpan ts = ts1.Subtract(ts2).Duration(); return ts.Minutes; } /// <summary> /// 時間一減去時間二 /// </summary> /// <param name="DateTime1">時間一</param> /// <param name="DateTime2">時間二</param> /// <returns></returns> public static int DiffDay(DateTime DateTime1, DateTime DateTime2) { TimeSpan ts1 = new TimeSpan(DateTime1.Ticks); TimeSpan ts2 = new TimeSpan(DateTime2.Ticks); TimeSpan ts = ts1.Subtract(ts2); return ts.Days; } /// <summary> /// 時間格式轉換 /// </summary> /// <param name="dt">時間</param> /// <returns>特定時間格式</returns> public static string GetDateFomatString(DateTime dt) { return string.Format("{0:yy年MM月dd日HH時mm分}", dt); } public static string GetDateFomatString() { return string.Format("{0:yy年MM月dd日HH時mm分}", DateTime.Now); } public static string GetDateFomatAllString(DateTime dt) { return string.Format("{0:yyyy-MM-dd HH:mm:ss}", dt); } public static string GetDateFomatAllString(object dt) { return string.Format("{0:yyyy-MM-dd HH:mm:ss}", dt); } public static string GetDateFomatStringSimple(object dt) { return string.Format("{0:yyyy-MM-dd}", dt); } #endregion
@陳卧龍的博客