1)Response.WriteFile();
這條語句用來將一個檔案直接寫入響應流,我們可能會用它顯示一個圖片或者顯示一個TXT檔案裡面的內容,等等,但我下面來舉個例子,看看這條語句可能會帶來的隱患:
1。建立一個Handler.ashx頁面
2。裡面寫入代碼
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
string r = context.Request["re"].ToString();
context.Response.WriteFile(r);
}
很簡單,就是通過一個傳值來顯示一個檔案的內容,這種用法其實挺常見,我們可以在另一個頁面掌一個image控制項,圖片地址為Handler.ashx?re=某個圖片地址,來顯示圖片,動態給image控制項載入圖片,但如果使用者直接存取“Handler.ashx?re='./Handler.ashx'”;你就慘了,這個頁面的原始碼就會被下載,如果這個頁面有重要東西的話,網站安全性就會有危機。
註:首先在Handler.ashx判斷傳值,要傳圖片,傳的值尾碼就是圖片類型,禁止其他類型,其次,少用Response.WriteFile。
2) xxs
這個不多說了,看起來時一個簡單漏洞,可每年都有大型網站曝這個東西出來,所以還是注意點好。
3) WebShell
上傳控制項,聽起來很常用,其實,有時候,它也會爆出漏洞,舉個例子,假如你提供一個上傳控制項允許使用者上傳頭像到伺服器硬碟:
FileUpload1.PostedFile.SaveAs(路徑);如果使用者通過url能夠看出你將要將檔案放到的檔案夾的相對路徑,而你又沒有檢查上傳的檔案的相互關聯類型資訊的話。使用者大可這樣:
1。建立一個頁面,添加
protected void Page_Load(object sender, EventArgs e)
{
System.IO.File.Delete(伺服器某個檔案的路徑); //就是說,使用者可以通過這個控制項上傳到伺服器任何自己寫的代碼,他可以做任何事情,是不是你會覺得很不安全啊,他可以刪除你的檔案,可以想辦法竊取你的資料庫,等等。
}
2。使用者訪問http://你的網域名稱/那個上傳檔案夾的相對路徑/使用者剛才上傳的檔案名稱。這樣,使用者寫的代碼就得到執行了。
註:所以,記住首先判斷上傳的檔案的類型、尾碼;其次給伺服器的檔案及檔案夾設定許可權;
4)sql注入。
這個不說了。