日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

web开发中常见的安全漏洞及避免方法

發布時間:2025/3/21 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 web开发中常见的安全漏洞及避免方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、安全攻擊

? ? 1、SQL、HTML、JS、OS命令注入

? ? 2、XSS跨站腳本攻擊,利用站內信任的用戶,在web頁面插入惡意script代碼

? ? 3、CSRF跨站請求偽造,通過偽裝來自信任用戶的請求來利用受信任的網站。

? ? 4、目錄遍歷漏洞

? ? 5、參數篡改

? ? 6、會話劫持

2、防止攻擊的措施總結

1) 對用戶輸入的數據進行全面安全檢查或過濾,尤其注意檢查是否包含SQL 或XSS特殊字符。

?? 驗證用戶輸入的數據,包括值、類型、范圍等等,用驗證控件進行驗證 RequiredFieldValidator RangeValidator RegularExpressionValidator

?? 這些檢查或過濾必須在服務器端客戶端都進行。客戶端服務端都要進行驗證,客戶端為了提高用戶體驗,服務端才可以有效防止威脅

2)不要使用管理員權限的數據庫連接,不要使用動態拼接sql

3)機密信息加密,不能使用明文

4)每個頁面加載時,對用戶合法性進行判斷。

5)登錄后session中的敏感信息需要加密,避免在永久cookies中存儲敏感信息,重要的cookie標記為http only

6)發送敏感信息時使用SSL、POST方式,盡量使用新型web HSTS安全協議

7)不要直接拋出異常的詳細信息給用戶,異常返回友好的頁面,防止用戶看到敏感信息

8)在服務器與網絡的接口處配置防火墻,用于阻斷外界用戶對服務器的掃描和探測。

9)限制網站后臺訪問權限,如:禁止公網IP訪問后臺;禁止服務員使用弱口令。

10)關閉windows的8.3格式功能。DOS系統下的命令方式為8.3格式,即文件名不超過8個字符,擴展名不超過3個字符。形如:???.exe 。

? ? ? ?現在Windows系統文件名長度最長可達255個字符了。

11)限制敏感頁面或目錄的訪問權限。

12)項目發布前使用使用漏洞掃描軟件,如IBM appScan,UnisWebScanner,對安全性進行評估。

安全漏洞及防止:

1、sql注入漏洞
? ? ?1、在框架中內置對有害語句及符號的過濾,如insert ‘ update,在基類進行過濾,這樣子類就不用關心也可以避免這些常用的攻擊了

? ? ??

/// <summary>/// 過濾 Sql 語句字符串中的注入腳本/// </summary>/// <param name="source">傳入的字符串</param>/// <returns>過濾后的字符串</returns>public static string SqlFilter(string source){if (string.IsNullOrEmpty(source)){return "";}//單引號替換成兩個單引號source = source.Replace("'", "''");source = source.Replace("\"", "");source = source.Replace("&", "&amp");source = source.Replace("<", "&lt");source = source.Replace(">", "&gt");source = source.Replace("delete", "");source = source.Replace("update", "");source = source.Replace("insert", "");//半角封號替換為全角封號,防止多語句執行source = source.Replace(";", ";");//半角括號替換為全角括號source = source.Replace("(", "(");source = source.Replace(")", ")");///要用正則表達式替換,防止字母大小寫得情況//去除執行存儲過程的命令關鍵字source = source.Replace("Exec", "");source = source.Replace("Execute", "");//去除系統存儲過程或擴展存儲過程關鍵字source = source.Replace("xp_", "x p_");source = source.Replace("sp_", "s p_");//防止16進制注入source = source.Replace("0x", "0 x");return source;}


? ? ?2、堅持使用參數化方式賦值
? ? ?3、不要直接拋出異常的詳細信息給用戶,異常返回友好的頁面,防止用戶看到數據庫的細節,關閉了Web.Config的CustomErrors的時候,可能就不會看到。
? ? ? ? ?<system.web>
? ? ? ? ? ? ? <compilation debug="true" targetframework="4.0" />
? ? ? ? ?</system.web>
2、XSS又叫CSS--Cross Site Script 跨站腳本攻擊
? ? ?1、清理用戶輸入,過濾js代碼,過濾特殊字符
? ? ? ? ? [1] <>(尖括號) ? ? [5] ;(分號)
? ? ? ? ? [2] "(引號) ? ? ? ? ? [6] ()(括號)
? ? ? ? ? [3] '(單引號) ? ? ? ? [7] &(& 符號)
? ? ? ? ? [4] %(百分比符號) [8] +(加號)
? ? ?2、使用HttpUitility及AntiXSSLibrary類庫中的方法對html代碼進行處理

? ? ? ? ? ?賦值不會彈框 this.lblName.Text = Encoder.HtmlEncode("<script>alert('OK');</script>");

編碼方法使用場景
HtmlEncode(String)不受信任的HTML代碼。
HtmlAttributeEncode(String)不受信任的HTML屬性
JavaScriptEncode(String)不受信任的輸入在JavaScript中使用
UrlEncode(String)不受信任的URL
VisualBasicScriptEncode(String)不受信任的輸入在VBScript中使用
XmlEncode(String)不受信任的輸入用于XML輸出
XmlAttributeEncode(String)不 受信任的輸入用作XML屬性


3、用戶信息用MD5加密
? ??

#region MD5加密/// <summary>/// 獲取MD5哈希值/// </summary>/// <param name="Text">字符串</param>/// <returns>MD5哈希值</returns>public static string GetMd5Hash(string Text){MD5 md5 = MD5.Create();byte[] data = md5.ComputeHash(Encoding.Default.GetBytes(Text));StringBuilder builder = new StringBuilder();for (int i = 0; i < data.Length; i++){builder.Append(data[i].ToString("x2"));}return builder.ToString();}/// <summary>/// 驗證MD5哈希值/// </summary>/// <param name="Text">字符串</param>/// <param name="TextHash">哈希值</param>/// <returns>相同返回True,不同返回False</returns>public static bool VerifyMd5Hash(string Text, string TextHash){string hash = GetMd5Hash(Text);StringComparer comparer = StringComparer.OrdinalIgnoreCase;if (0 == comparer.Compare(hash, TextHash)){return true;}else{return false;}}#endregion

  

4、在頁面加載時判斷用戶是否登錄,如果沒有登錄則轉到登錄界面,每個頁面繼承基類BaseControl

protected override void OnActionExecuting(ActionExecutingContext filterContext){//身份驗證if (CurrentUser == null){string request = System.Web.HttpContext.Current.Request.Headers.Get("X-Requested-With");if (string.Compare(request, "XMLHttpRequest", true) == 0){filterContext.Result = new JsonResult { Data = "登錄超時,請刷新頁面!" };filterContext.HttpContext.Response.ContentType = "text/plain;charset=UTF-8";filterContext.HttpContext.Response.Status = "403 Internal Server Error";filterContext.HttpContext.Response.StatusCode = 403;}else{filterContext.Result = new RedirectResult("~/Login/SessionOutTime");}}}

  

參見:

Web的脆弱性:各種注入、攻擊

Web開發常見的幾個漏洞解決方法

PHP開發中常見的安全問題詳解和解決方法(如Sql注入、CSRF、Xss、CC等)

?

轉載于:https://www.cnblogs.com/xiaochun126/p/5113371.html

總結

以上是生活随笔為你收集整理的web开发中常见的安全漏洞及避免方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。