五種常見的ASP.NET安全缺陷
來源:互聯網
上載者:User
保證應用程式的安全應當從編寫第一行代碼的時候開始做起,原因很簡單,隨著應用規模的發展,修補安全性漏洞所需的代價也隨之快速增長。根據IBM的系統科學協會(Systems Sciences Institute)的研究,如果等到軟體部署之後再來修補缺陷,其代價相當於開發期間檢測和消除缺陷的15倍。
為了用最小的代價保障應用程式的安全,在代碼本身的安全性、抗禦攻擊的能力等方面,開發人員應當擔負更多的責任。然而,要從開發的最初階段保障程式的安全性,必須具有相應的技能和工具,而真正掌握這些技能和工具的開發人員並不是很多。雖然學寫安全的代碼是一個複雜的過程,最好在大學、內部培訓會、行業會議上完成,但只要掌握了下面五種常見的ASP.NET應用安全缺陷以及推薦的修正方案,就能夠領先一步,將不可或缺的安全因素融入到應用的出生之時。
一、不能盲目相信使用者輸入
在Web應用開發中,開發人員最大的失誤往往是無條件地信任使用者輸入,假定使用者(即使是惡意使用者)總是受到瀏覽器的限制,總是通過瀏覽器和伺服器互動,從而開啟了攻擊Web應用的大門。實際上,駭客們攻擊和操作Web網站的工具很多,根本不必局限於瀏覽器,從最低級的字元模式的原始介面(例如telnet),到CGI指令碼掃描器、Web代理、Web應用掃描器,惡意使用者可能採用的攻擊模式和手段很多。
因此,只有嚴密地驗證使用者輸入的合法性,才能有效地抵抗駭客的攻擊。應用程式可以用多種方法(甚至是驗證範圍重疊的方法)執行驗證,例如,在認可使用者輸入之前執行驗證,確保使用者輸入只包含合法的字元,而且所有輸入欄位的內容長度都沒有超過範圍(以防範可能出現的緩衝區溢位攻擊),在此基礎上再執行其他驗證,確保使用者輸入的資料不僅合法,而且合理。必要時不僅可以採取強制性的長度限制策略,而且還可以對輸入內容按照明確定義的特徵集執行驗證。下面幾點建議將協助你正確驗證使用者輸入資料:
⑴ 始終對所有的使用者輸入執行驗證,且驗證必須在一個可靠的平台上進行,應當在應用的多個層上進行。