web安全問題總結

主要問題

  1. SQL注入:即經過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令,從而獲取不應獲取的數據
  2. 跨站腳本攻擊(也稱爲XSS):指利用網站漏洞從用戶那裏惡意盜取信息。用戶在瀏覽網站、使用即時通信軟件、甚至在閱讀電子郵件時,一般會點擊其中的連接。連接裏能夠獲取網站的cookie並提交給攻擊者網站,攻擊者利用cookie就可以盜取用戶信息。例如: 用戶發表了評論alert(1),並不加處理的存儲到服務器數據庫,這樣,當其餘用戶訪問對應頁面時,會自動在頁面彈出彈窗1;
  3. 跨站請求僞造(CSRF/XSRF): 用戶在登陸工商銀行網頁的同時,同時打開了另外一個不安全頁面,裏面有一行html代碼<img src="http://www.examplebank.com/withdraw?account=Alice&amount=1000&for=Badman">【假的】去執行工商銀行轉帳操做,用戶在打開不安全頁面的同時會自動執行轉帳操做,而用戶自己並不知情。CSRF能成功是由於同一個瀏覽器會共享Cookies。

措施

  1. 使用https協議而不是http協議;
  2. 不要在客戶端代碼、cookie,localStorage,sessionStorage中存放敏感數據,cookie設置成httponly,不容許經過JavaScript訪問cookie
  3. 在中間件或者前置nginx設置HTTP安全頭部,好比Strict-Transport-Security,X-Frame-Options,X-XSS-Protection,X-Content-Type-Options,Content-Security-Policy等;
  4. SQL注入: 儘量使用sequelize方法去查詢數據庫,少使用sequelize.query,若是必須寫,對於sql語句參數化查詢或預處理,對用戶的輸入內容進行轉義;
  5. 不用eval;
  6. 使用非root用戶啓動應用程序;
  7. 限制同一個用戶在規定時間內訪問網站接口的次數,好比一秒一次;
  8. 限制密碼輸入錯誤次數;
  9. 對於一些重要敏感操做時服務端要檢查Referer字段,同時在敏感操做多進行幾回數據交互完成,而不是一次請求完成,也能夠有效避免CSRF
相關文章
相關標籤/搜索