- 漏洞:任意文件繞過上傳漏洞驗證。
漏洞危害: 黑客可以上傳腳本木馬控制網站。
解決方案:白名單過濾文件后綴,並去除上傳目錄的腳本和執行權限。
解決方法:iis網站->Upload文件夾->處理程序映射(雙擊)->編輯功能權限->腳本取消勾選。
- 漏洞: SQL注入攻擊漏洞驗證。
漏洞危害: 黑客利用精心組織的SQL語句,通過Web表單注入的Web應用中,從而獲取后台DB的訪問與存取權限。獲取相應的權限之后,可以對網頁和數據庫進行進一步的篡改、掛馬和跳板攻擊行為。
解決方案:關閉數據庫查詢報錯信息,全局對搜索框參數keyword進行參數過濾:
1.每個提交信息的客戶端頁面,通過服務器端腳本(JSP、ASP、ASPX、PHP等腳本)生成的客戶端頁面,提交的表單(FORM)或發出的連接請求中包含的所有變量,必須對變量的值進行檢查。過濾其中包含的特殊字符,或對字符進行轉義處理。特殊字符包括:SQL語句關鍵詞:如 and 、or 、select、xp_cmdshell;
SQL語句特殊符號:’、”、;等;
2.Web應用使用的數據庫用戶最好不是數據庫管理員用戶,應當采取最小權限原則,以免在被攻破后造成更大的損失;
3.Web服務器與SQL數據庫服務器不應放置在相同的服務器上。應將SQL數據庫服務器放置在內網;對於有條件的公司,可以將Web應用中的所有動態SQL改為靜態SQL,將參數采用綁定的方式使用,不要拼SQL串。
解決方法: string pattern1 = @"(\%27)|(\')|(\-\-)";
//防止執行 ' or
string pattern2 = @"((\%27)|(\'))\s*((\%6F)|o|(\%4F))((\%72)|r|(\%52))";
//防止執行sql server 內部存儲過程或擴展存儲過程
string pattern3 = @"\s+exec(\s|\+)+(s|x)p\w+";
if (!string.IsNullOrEmpty(model.Keyword))
{
model.Keyword = Regex.Replace(model.Keyword, pattern1, string.Empty, RegexOptions.IgnoreCase);
model.Keyword = Regex.Replace(model.Keyword, pattern2, string.Empty, RegexOptions.IgnoreCase);
model.Keyword = Regex.Replace(model.Keyword, pattern3, string.Empty, RegexOptions.IgnoreCase);
}
- XSS跨站腳本攻擊漏洞驗證
漏洞危害: XSS可能造成的危害包括:將使用者瀏覽器導向惡意網站、偷取使用者的cookie、將使用者瀏覽器導向釣魚網站,以騙取賬號密碼等個人資料、安裝惡意后門木馬、安置web瀏覽器炸彈等;
XSS攻擊介於攻擊者與使用者之間的攻防戰,並不會對server主機有任何威脅,所以才被稱為跨站腳本攻擊,意思即是:攻擊者使用某些腳本語言跨過主機對使用者進行攻擊。
解決方案:1、控制腳本注入的語法要素。比如:JavaScript離不開:“<”、“>”、“(”、“)”、“;”...等等,我們只需要在輸入或輸出時對其進行字符過濾或轉義處理就即可。一般我們會采用轉義的方式來處理,轉義字符是會使用到HTML的原始碼,因為原始碼是可以被瀏覽器直接識別的,所以使用起來非常方便。允許可輸入的字符串長度限制也可以一定程度上控制腳本注入。
2、所有的過濾、檢測、限制等策略,建議在Web Server那一端去完成,而不是使用客戶端的JavaScript或者VBScript去做簡單的檢查。因為真正的攻擊者可以繞過你精心設計制作的客戶端進行過濾、檢測或限制手段。
解決方法:在前后台邏輯把特殊符號”<”,”/”等替換。
例如:前台var LocationData = $('#Location').val().replace(/[\<\>]/g, " ");