常見的web安全問題以及應對方式

1、SQL注入

SQL注入是一種常見的Web安全漏洞,***者利用這個漏洞,能夠訪問或修改數據,或者利用潛在的數據庫漏洞進行***。SQL注入,就是經過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。具體來講,它是利用現有應用程序,將(惡意的)SQL命令注入到後臺數據庫引擎執行的能力,它能夠經過在Web表單中輸入(惡意)SQL語句獲得一個存在安全漏洞的網站上的數據庫,而不是按照設計者意圖去執行SQL語句。SQL注入的本質:數據和代碼未分離,即數據當作了代碼來執行html

防護方法

  • 嚴格限制Web應用的數據庫的操做權限,給此用戶提供僅僅可以知足其工做的最低權限,從而最大限度的減小注入***對數據庫的危害
  • 後端代碼檢查輸入的數據是否符合預期,嚴格限制變量的類型,例如使用正則表達式進行一些匹配處理。
  • 字符串長度驗證,僅接受指定長度範圍內的變量值。sql注入腳本必然會大大增長輸入變量的長度,經過長度限制,好比用戶名長度爲 8 到 20 個字符之間,超過就斷定爲無效值。
  • 對進入數據庫的特殊字符(',",,<,>,&,*,; 等)進行轉義處理,或編碼轉換。基本上全部的後端語言都有對字符串進行轉義處理的方法,好比 lodash 的 lodash._escapehtmlchar 庫。
  • 全部的查詢語句建議使用數據庫提供的參數化查詢接口,參數化的語句使用參數而不是將用戶輸入變量嵌入到 SQL 語句中,即不要直接拼接 SQL 語句。例如 Node.js 中的 mysqljs 庫的 query 方法中的 ? 佔位參數。
2、XSS

XSS (Cross-Site Scripting),跨站腳本***。跨站腳本***是指經過存在安全漏洞的Web網站註冊用戶的瀏覽器內運行非法的HTML標籤或JavaScript進行的一種***。前端

跨站腳本***有可能形成如下影響:mysql

  • 利用虛假輸入表單騙取用戶我的信息。
  • 利用腳本竊取用戶的Cookie值,被害者在不知情的狀況下,幫助***者發送惡意請求。
  • 顯示僞造的文章或圖片。

XSS 的原理是惡意***者往 Web 頁面裏插入惡意可執行網頁腳本代碼,當用戶瀏覽該頁之時,嵌入其中 Web 裏面的腳本代碼會被執行,從而能夠達到***者盜取用戶信息或其餘侵犯用戶安全隱私的目的。正則表達式

3、CSRF

CSRF(Cross Site Request Forgery),即跨站請求僞造,是一種常見的Web***,它利用用戶已登陸的身份,在用戶絕不知情的狀況下,以用戶的名義完成非法操做。sql

完成 CSRF ***必需要有三個條件:shell

  • 用戶已經登陸了站點 A,並在本地記錄了 cookie
  • 在用戶沒有登出站點 A 的狀況下(也就是 cookie 生效的狀況下),訪問了惡意***者提供的引誘危險站點 B (B 站點要求訪問站點A)。
  • 站點 A 沒有作任何 CSRF 防護

2.如何防護

  • Get 請求不對數據進行修改
  • 不讓第三方網站訪問到用戶 Cookie
  • 阻止第三方網站請求接口
  • 請求時附帶驗證信息,好比驗證碼或者 Token
4、url跳轉漏洞

藉助未驗證的URL跳轉,將應用程序引導到不安全的第三方區域,從而致使的安全問題。數據庫

1.referer的限制若是肯定傳遞URL參數進入的來源,咱們能夠經過該方式實現安全限制,保證該URL的有效性,避免惡意用戶本身生成跳轉連接npm

2.加入有效性驗證Token咱們保證全部生成的連接都是來自於咱們可信域的,經過在生成的連接里加入用戶不可控的Token對生成的連接進行校驗,能夠避免用戶生成本身的惡意連接從而被利用,可是若是功能自己要求比較開放,可能致使有必定的限制。後端

5、點擊劫持

經過iframe透明化,漏出來一個按鈕,誘惑用戶點擊。瀏覽器

如何防護?

1.X-FRAME-OPTIONS是一個 HTTP 響應頭,在現代瀏覽器有一個很好的支持。這個 HTTP 響應頭 就是爲了防護用 iframe 嵌套的點擊劫持***。X-FRAME-OPTIONS有3個值可選:DENY,表示頁面不容許經過 iframe 的方式展現SAMEORIGIN,表示頁面能夠在相同域名下經過 iframe 的方式展現ALLOW-FROM,表示頁面能夠在指定來源的 iframe 中展現

2.經過js的方法判斷,來隱藏iframe顯示的頁面。

6、OS命令注入***

OS命令注入***指經過Web應用,執行非法的操做系統命令達到***的目的。

https://example.com/ssss?z=23&y=222

如何防護?

1.後端對前端提交內容進行規則限制(好比正則表達式)。

2.在調用系統命令前對全部傳入參數進行命令行參數轉義過濾。

3.不要直接拼接命令語句,藉助一些工具作拼接、轉義預處理,例如 Node.js 的 shell-escape npm包

相關文章
相關標籤/搜索