以下都以ASP.NET開發網站為例。
1、sql注入漏洞。
解決辦法:使用存儲過程,參數不要用字符串拼接。簡單改進辦法:使用SqlHelper和OledbHelper
2、跨站腳本漏洞
解決辦法:“默認禁止,顯式允許”的策略。具體參考:從客戶端檢測到有潛在危險的Request.Form值,禁止提交html標記(<>等被轉義成<)
3、上傳漏洞
解決辦法:禁止上傳目錄的運行權限。只給讀取權限。另外要禁止上傳非法類型文件。不僅僅是aspx類型,包括很多,甚至htm、html類型文件也不應該直接上傳保存。
4、數據庫連接帳號,盡量使用最低權限的帳號。一定不要給管理員權限。
假如被黑客得知了數據庫的密碼。
那我們就可以執行任意系統命令了。
例如:xp_cmdshell 'dir c:\'
另外還有
tasklist
taskkill
pslist
pskill
net user
net user guest /active:yes
net user hack hack /add
net user hack /del
net localgruop administrators hack /add
query user
logoff 1
這些命令是不是很恐怖?呵呵。所以一定不要給web數據庫連接帳號管理權限。
5、用戶登錄。這裡不要把用戶標識明文存儲在cookie裡,以用來標識用戶是否登錄。因為cookie是可以被修改的。請看這裡的修改cookie,冒充其他用戶。nc httpwatch使用視頻教程,用微軟的Forms窗體身份驗證和角色一般情況都夠用了。
6、如果網站程序中用到讀寫文件,一定要慎重,因為讀取的操作很可能被黑客利用,例如用一個查看圖片的aspx文件讀取web.config,用一個生產模板的功能生成木馬。
7、充分利用驗證碼。用戶登錄、評論等等可能會被提交垃圾信息的地方,都要使用驗證碼,而且要有一個安全的驗證碼。才能防止被暴力破解,防止網站充滿垃圾數據。
8、代碼要嚴謹,修改用戶資料、修改用戶數據都要跟用戶關聯起來,比如update news set title='新的標題' where id=新聞編號,這裡還要加一個限制:userid=用戶編號,這樣可以防止一個人修改別人的新聞。
9、關閉web.config中的錯誤顯示。<customErrors mode="RemoteOnly" defaultRedirect="404.aspx"></customErrors>
以上是程序方面的安全問題,想到哪裡就寫到哪裡。沒有系統的整理。
另外順便提提服務器安全問題。
1、開啟windows防火牆,關閉不用的端口。這點是最重要的。就是說你提供的服務越少,你的服務器就越安全。
2、設置安全的密碼。復雜度要達到一定強度。定期修改密碼。密碼不要洩露給別人,包括機房管理員。如果必要告訴機房人員,待機房人員用完密碼以後立刻改掉。
3、安裝ARP防火牆。機房裡ARP病毒非常多,如果中了ARP病毒,輕者浏覽網站不正常,可能有木馬跟隨。嚴重的就整個網站、機房都斷網了。
4、適當的安裝殺毒軟件。(諾頓、麥咖啡等)
5、IIS關閉不用的服務,例如asp支持,關閉不用的服務:ftp,smtp,pop3等等,修改網站根目錄。設置目錄權限。
6、針對各種攻擊,有不同的對策,例如cc攻擊。曾經遇到一次,深圳那邊有5台連續IP的機器對我的一個視頻站發動CC攻擊,導致網站打開非常的慢,開始我們還不知道是被攻擊,以為程序有漏洞,不停的找程序的問題。後來通過服務器安全管理軟件,查出是這些IP在作怪,通過站長屏蔽IP訪問的幾種方法中提到的“本地安全策略”方法屏蔽掉這5個IP以後服務器恢復正常,網站恢復了往日的速度。
常用命令:iisapp -a,netstat -nao,tasklist,telnet xxx.xxx.xxx.xxx 端口
7、遠程管理軟件不要用默認端口,雖然密碼被暴力破解和猜到的可能很小,但是總是有無聊的人嘗試。造成日志裡一堆垃圾信息。修改端口以後就沒有人嘗試破解密碼了。因為他跟不知道這個端口是做什麼的。談到這裡,我想起,不用的服務要關閉,那麼用的服務器就要開啟嗎?那肯定是要啟動的,不啟動誰都用不了了,這裡可以做一個限制,比如我的smtp服務只提供本機使用,那麼我從防火牆裡把25端口關閉,如果我的SQL SERVER只是供本機使用的。那麼我也從防火牆裡吧1433端口關閉。這樣外部無法連接,自然也不存在暴力破解數據庫密碼了。windows防火牆還可以針對某一個IP開放某個端口。還是比較強大的。
以上亂七八糟的談了一堆,希望對站長和程序員們有所幫助,大家可以加我QQ:4111852交流。我非常的歡迎。
最後說一下那個網友被掛馬的解決建議:
1、備份好數據庫、其他數據。
2、把所有程序、包括目錄全部刪除,以確保沒有文件被留後門。
3、如果有可能,檢查服務器安全,確保服務器沒有被建立後門,例如超級帳號、安裝了後門木馬。這樣的話,你怎麼修改你的程序都沒用,人家隨時可以修改你的程序。
4、另一個網友提到的辦法,上傳一個靜態文件test.html,訪問一下看看,是不是也有木馬以排除網絡問題。
5、如果4中,確認不是網絡問題,那就是文件被掛馬了,全部程序刪除,上傳自己的安全的備份,恢復數據,檢查數據庫,確保木馬不在數據庫中。
6、查看IIS日志,看誰登錄過後台,參考:iis日志分析視頻教程
思路特別亂,大家將就看一下吧