服務器端安全

第一個你們都知道的是注入攻擊:前端

這是針對數據庫的破環行至關巨大,當不單是隻注入sql,還有垃圾代碼。談談防護注入攻擊。通常來講預防sql注入的最佳方式是,使用預編譯語句綁定變量。node中能夠用escape()對查詢語句進行編碼,也能夠基於數據庫進行轉義。前端必定要檢查數據類型,例如日期只能輸入日期,號碼只能輸入號碼。node

第二個常見的是文件上傳漏洞:web

他指用戶上傳了可執行腳本,而且經過該腳本獲取了執行服務器的能力,這種攻擊沒有技術門檻。這要知足三個方面的條件,1,上傳的文件能被服務器執行。2,經過web能訪問到。3,上傳的文件不能被壓縮,格式化改變內容。算法

如何應對這種上傳攻擊呢?sql

首先文件的上傳目錄必須設置爲不可執行,用戶傷處的文件,放到單獨的服務器作靜態資源處理,還能做爲緩存增長訪問速度。數據庫

其次用白名單的方式上傳的文件類型進行過濾。瀏覽器

最後使用隨機數改寫文件名和路徑。緩存

這個東西其實很難處理:例如上傳的色情圖片,反動政治,跟業務結合的越緊密問題越大。服務器

第三個是認證和會話管理微信

認證和受權是兩個過程,認證是認出用戶是誰,受權是用戶能作什麼,認證其實就是驗證憑證的過程。

用戶的好多密碼是較弱的,說了你可能不信:某國導彈。控制帳號:admin,密碼是123456,其實做爲服務端人員也不該該掌握用戶密碼:用戶密碼須要用不可逆的加密算法,或者單向散列函數算法,加密後存儲的數據庫。這應才能保證用戶的隱私性。密碼通常在登陸時候用,用戶第一次登陸完成之後,服務端就生成session,這個session能夠存到瀏覽器的cookie中,因此session必須是高隨即的。一種有意思的攻擊叫session保持攻擊:session是有有效期的,過了有效期用戶要從新登陸,有時爲了用戶體驗只要用戶"活着",session會一直活下去,從而攻擊者不停的發送請求,讓session不能銷燬,從而耗費系統內存,在web開發中訪問量大的時候比較明顯。強制銷燬session就好了。

還有一種認證第三方登陸,微信支付寶的那一套auther認證,開發微信公衆號的都知道,這裏稍微展開一下,以微信爲例子:

每給公衆號都有個appid。經過appid,構造一個受權url,若是用戶贊成受權,微信服務器將重定向到當前鏈接上,而且該鏈接會攜帶一個code值,能夠根據code值獲取用戶的access_token,而後用token值獲取用戶信息,注意每一個code都有過時時間。

第四個是用戶權限控制

垂直權限控制:是基於角色的權限控制,用戶屬於某個角色,該角色有什麼權限,通常在客戶關係管理時候用。還有超級管理員權限,能給角色分配權限。這是常見的解決方案,不過這種方案有越權訪問的問題。

相關文章
相關標籤/搜索