開發網站須要注意的安全問題

原文地址:http://kk-kingboy.blog.163.com/blog/static/55354561200911313145623/javascript

因爲網站被黑的狀況較多,如下總結網站應用方面須要注意的安全問題:php

表單數據驗證
在數據被輸入程序前必須對數據合法性的檢驗。非法輸入問題是最多見的Web應用程序安全漏洞。
須要作到:對任何輸入內容進行檢查。接受全部能夠接受的內容,拒絕全部不能接受的內容。
全部提交的表單數據,都必須驗證兩次,即提交前在客戶端用Javascript驗證,提交後在服務器端用腳本再次驗證,保證數據的合法性。尤爲是對於必填項,不只須要同時在客戶端和服務端驗證是否作了輸入,還要驗證輸入的數據格式是否正確。須要注意:在客戶端上的Javascript驗證並非真正意義上的檢查。好比惡意用戶很容易在本身的終端上禁用腳本執行,從而防止客戶端的內容檢查腳本運行,使得他能夠輸入惡意代碼併成功地提交表單。對於圖像上傳功能,須要驗證上傳圖像的格式及大小是否合乎要求。java

防範SQL語句注入攻擊
程序須要對全部從外部接收到的數據進行過濾,防止惡意攻擊。主要防範的字符有「'|script|exec|insert|select|delete|update|count|chr|mid|master|truncate|declare」。
使用積極的過濾而不是消極的過濾。 換句話說,就是檢查應該輸入什麼,而不是檢查不該該輸入什麼。正則表達式

只規定哪些內容不該該輸入,會留下太多的漏洞。由於有不少內容都不該該被輸入。積極的過濾方式應該包括:
? 是否爲空(須要去掉空格後判斷)
? 是不是正確的數據類型 (字符串,整數等) 
? 是否要求帶有參數
? 字符編碼是否容許 
? 輸入內容是否達到了內容長度的最大或者最小界限 
? 是否容許輸入空值 
? 若是應該輸入數字,那麼肯定數字大小的範圍。 
? 輸入內容是否形成了數據重複,若是是,判斷這種狀況是否能夠接受。 
? 輸入內容是否符合格式要求(好比是否採用正則表達式) 
? 若是是經過下拉列表選取的內容,確保其包含了有效的值數據庫

地址欄變量須要進行驗證
對於從地址欄上接收到的變量,必需要驗證其合法性。例如,若是從地址欄上收到了文章ID值,則須要驗證ID是否爲數字,是否有攻擊字符等。瀏覽器

跨站攻擊的預防
在驗證提交的數據時,爲防止跨站攻擊 ,能夠檢查上一個頁面是否爲本站,另外,過濾<iframe>、<javascript>、<alert>,重點把「<」替換爲「&lt;」,把 「>」替換爲「&gt;」安全

目錄和文件夾的安全
用戶只能訪問網站目錄下的內容,確保用戶不能訪問網站目錄之外的目錄。
程序中涉及文件包含的地方,要確認全部包含的文件的位置正確。爲了防止非法包含文件,應特別當心「./」或「../」的使用。服務器

後臺全部程序頁面須要作受權驗證
若是未通過成功登陸,不容許訪問任何一個後臺程序頁面。若是用Session驗證,Session有效期不能夠太長,建議爲15分鐘。
成功登錄後的用戶,須要驗證是否有某個操做的權限。jsp

關鍵信息須要加密
對於密碼、會話令牌等關鍵信息,須要進行加密後再保存到數據庫,不容許用明文方式。通常採用MD5加密方式。網站

配置文件安全
程序中的配置文件(重點是數據庫鏈接配置)須要重點進行安全保護,配置文件不能容許用戶直接訪問,配置文件的文件擴展名不能爲.inc、.txt,必須爲可執行腳本擴展名,如.asp、.php、.jsp、.aspx…

數據庫安全
數據庫文件須要重點安全保護,對於使用access數據庫的程序,不能夠容許數據庫直接能夠經過瀏覽器下載,數據庫文件的路徑和文件名稱須要不易猜想到,數據庫文件的擴展名不能爲.mdb。能夠設置服務器來禁止此類型的文件下載。
使用「最低權限」限制數據庫用戶的權限。若是使用SQL SERVER或MySQL數據庫,能夠考慮只給瀏覽用戶以讀權限,後臺用戶以讀、寫及刪權限。

資源的釋放
程序中的使用了關鍵資源後,必須進行顯式釋放和關閉,尤爲是數據庫鏈接、文件句柄等資源。

防止過度詳細的錯誤提示
攻擊者常常會故意輸入錯誤的內容,進而分析系統給出的錯誤提示信息,從中獲取系統信息,發現可能存在的漏洞。對於使用Access數據庫的用戶來講,過於詳細的錯誤提示可能會暴露出數據庫文件的路徑。

友好的操做反饋提示
對於流程性的操做,須要給用戶的操做以友好性反饋提示,讓用戶瞭解本身的操做是否有問題,問題在什麼地方。例如,會員註冊表單,若是用戶提交時,忘記填寫某些項,能夠在該項後以醒目的顏色來提示,提示的顯示最好以AJAX技術實現無刷新效果,提升用戶體驗。後臺的程序對於一些操做,如刪除、審覈,必須讓用戶確認一下才能夠執行。無論用戶操做成功或失敗,都須要給與提示信息。

驗證碼的使用對於用戶註冊、用戶登錄、調查問卷、在線反饋、評論等程序,須要加上驗證碼,防止機器人繞過限制提交垃圾信息。

相關文章
相關標籤/搜索