Web系統安全隱患包括:
完全信賴用戶提交內容
開發人員決不能相信一個來自外部的數據。不管它來自用戶提交表單,文件系統的文件或者環境變量,任何數據都不能簡單的想當然的采用。所以用戶輸入必須進行驗證并將之格式化以保證安全。
在web目錄中存放敏感數據
任何和所有的敏感數據都應該存放在獨立于需要使用數據的程序的文件中,并保存在一個不能通過瀏覽器訪問的目錄下。當需要使用敏感數據時,再通過include 或 require語句來包含到適當的PHP程序中。
Web目錄禁止存放任何數據文件,例如代碼/運算結果數據/文檔等以方便下載。
后門和調試隱患
開發人員常常建立一些后門并依靠調試來排除應用程序的故障。在開發過程中這樣做可以,但這些安全漏洞經常被留在一些放在Internet上的最終應用中。一些常見的后門使用戶不用口令就可以登錄或者訪問允許直接進行應用配置的特殊URL。
越權漏洞
權限驗證機制必須保證在每一個需要身份驗證的程序文件中生效,即使是難以猜測的位置和名字,并且對用戶級別同樣進行嚴格驗證,確保用戶不可以非驗證狀態或低權限狀態訪問到不屬于自己的資源信息。
代碼同步安全
開發人員經常有直接從SVN代碼庫拷貝代碼直接上線的習慣,而且多數此類操作都是在UNIX系統下完成,SVN代碼庫下包含.svn目錄,UNIX是一個隱藏性質的目錄,開發人員很容易忽略其存在性,該目錄包含了關于工作拷貝目錄的管理數據,會導致泄露源碼、項目結構等敏感信息。
Svn同步過程中可以使用代碼語法檢測功能進行第一次代碼審計,具體實現請參考svn hook的pre-commit。
測試環境保護
測試環境安全與線上安全同樣重要,不要為了測試便利而忽略測試機的安全性,防止黑客由內到外的安全攻擊事件。
檢測機制層次隱患
所有的檢測機制必需放在服務端進行,不允許節省線上負載而采取本地js驗證。因為攻擊者可以重新構造表單請求,刪除檢測js代碼,從而繞過驗證。
數據來源安全
我們程序員寫出的程序多數都無法辨別請求是用戶自行發起的還是被偷偷惡意發起的,所以我們的程序需要對來源進行驗證,可以使用referer進行判斷,或者在提交的變量組中加入token驗證機制,使表單無法預測。
回答所涉及的環境:聯想天逸510S、Windows 10。
Web系統安全隱患包括:
完全信賴用戶提交內容
開發人員決不能相信一個來自外部的數據。不管它來自用戶提交表單,文件系統的文件或者環境變量,任何數據都不能簡單的想當然的采用。所以用戶輸入必須進行驗證并將之格式化以保證安全。
在web目錄中存放敏感數據
任何和所有的敏感數據都應該存放在獨立于需要使用數據的程序的文件中,并保存在一個不能通過瀏覽器訪問的目錄下。當需要使用敏感數據時,再通過include 或 require語句來包含到適當的PHP程序中。
Web目錄禁止存放任何數據文件,例如代碼/運算結果數據/文檔等以方便下載。
后門和調試隱患
開發人員常常建立一些后門并依靠調試來排除應用程序的故障。在開發過程中這樣做可以,但這些安全漏洞經常被留在一些放在Internet上的最終應用中。一些常見的后門使用戶不用口令就可以登錄或者訪問允許直接進行應用配置的特殊URL。
越權漏洞
權限驗證機制必須保證在每一個需要身份驗證的程序文件中生效,即使是難以猜測的位置和名字,并且對用戶級別同樣進行嚴格驗證,確保用戶不可以非驗證狀態或低權限狀態訪問到不屬于自己的資源信息。
代碼同步安全
開發人員經常有直接從SVN代碼庫拷貝代碼直接上線的習慣,而且多數此類操作都是在UNIX系統下完成,SVN代碼庫下包含.svn目錄,UNIX是一個隱藏性質的目錄,開發人員很容易忽略其存在性,該目錄包含了關于工作拷貝目錄的管理數據,會導致泄露源碼、項目結構等敏感信息。
Svn同步過程中可以使用代碼語法檢測功能進行第一次代碼審計,具體實現請參考svn hook的pre-commit。
測試環境保護
測試環境安全與線上安全同樣重要,不要為了測試便利而忽略測試機的安全性,防止黑客由內到外的安全攻擊事件。
檢測機制層次隱患
所有的檢測機制必需放在服務端進行,不允許節省線上負載而采取本地js驗證。因為攻擊者可以重新構造表單請求,刪除檢測js代碼,從而繞過驗證。
數據來源安全
我們程序員寫出的程序多數都無法辨別請求是用戶自行發起的還是被偷偷惡意發起的,所以我們的程序需要對來源進行驗證,可以使用referer進行判斷,或者在提交的變量組中加入token驗證機制,使表單無法預測。
回答所涉及的環境:聯想天逸510S、Windows 10。