您好,登錄后才能下訂單哦!
這篇文章的內容主要圍繞WEB開發中常見漏洞防御方法是什么進行講述,文章內容清晰易懂,條理清晰,非常適合新手學習,值得大家去閱讀。感興趣的朋友可以跟隨小編一起閱讀吧。希望大家通過這篇文章有所收獲!
SQL注入漏洞
SQL注入漏洞產生原因及危害
在sql查詢中很多程序員會將變量拼接入sql語句后再進行查詢,這樣如果黑客在參數中插入其他sql語句就可能導致我們網站的密碼被被黑客查詢出來或者被拖取大量數據,如果在開發中使用了字符串拼接進SQL語句就必須進行嚴格的過濾,任何用戶輸入的內容都不可信任,以下列舉幾種防御方法。
查詢例子如下
如果是這樣的數字型注入我們可以強制將傳入參數轉換為整數,以剔除黑客拼接的SQL語句。修改如下
這是這個網頁正常查詢的返回的結果。
這是一個典型的數字型注入,我們輸入注入語句可見注入成功
我們強制轉換類型到代碼中:
我們再執行注入可以看到恢復正常查詢,注入失敗。
如果查詢參數不是數字,那么我們該如何防護呢,那么這里可以使用通用型防護,對數字型和非數字型同樣適用,我們知道web中獲取參數的方式主要有三種分別是get、post、cookie。那么我們防護的主要方面也是這三個方面,我們可以對網站的所有流量進行黑名單過濾。當然這個也可以攔截xss漏洞。具體流程如下:
具體實現代碼:
測試
同樣我們在原先的網站上將我們的waf.php文件包含進去,在執行注入操作,可見我們已經將非法操作攔截。
PHP預處理查詢的例子
預處理的優點
預處理語句大大減少了分析時間,只做了一次查詢(雖然語句多次執行)。
綁定參數減少了服務器帶寬,你只需要發送查詢的參數,而不是整個語句。
預處理語句針對SQL注入是非常有用的,因為參數值發送后使用不同的協議,保證了數據的合法性。
XSS漏洞的防護
xss漏洞產生的原因及危害
xss漏洞和sql注入一樣也是注入型漏洞,主要是黑客在網頁中注入惡意的js代碼,可以導致我們的cookie被盜取,黑客通過cookie欺騙就能輕松登陸我們的后臺,黑客也可以利用js進行掛馬、黑帽seo、攻擊客戶計算機等操作危害十分嚴重。那么如何防御呢,我將講解兩種主要防御方法。
xss分類
xss主要分為反射型,儲存型、和DOM型
我們知道在數據庫查詢出來的數據可以打印到網頁上,但是數據可能是用戶在注冊或者輸入其他表單輸入的,那么這里用戶可能輸入的是js或者html代碼,這里就可能導致,用戶輸入的代碼在瀏覽器中被解析并執行,那么我們這就可以通過 htmlspecialchars()將其轉義為不可解析的字符串,從而避免此類攻擊。
這是一個模擬存在xss漏洞的網頁。我們進行模擬攻擊和修復。
我們傳入一個xss攻擊代碼,可見直接獲取了當前網頁的cookie內容
那我們在輸出時候給$id加上htmlspecialchars()呢
我們可以明顯看到瀏覽器不再解析我們傳入的js代碼,而是將它當做普通字符串輸出。
將我們sql注入的通用型防護waf.php包含到該網頁同樣可以實現過濾。
CSRF漏洞的防御
CSRF漏洞產生的原因和危害
CSRF漏洞主要是我們的網站沒有對表單驗證,這個表單是不是我們網站自己本身提交的,如果有一個改密碼的表單被人構造并放在了其他人的網站上,我們在打開這個黑客精心構造的域外表單時候就導致了我們本身的密碼被修改,黑客也可以通過CSRF漏洞進行蠕蟲式傳播,新浪微博就曾遭遇過此類攻擊,黑客精心構造表單,當你打開這個表單的鏈接時候就會自動發送一條微博,其他人打開同樣進行這樣的操作。
我們如何驗證這個表單是不是我們自己網站本身提交的呢,那么我們可以在每個表單下生成一個隱藏的input表單存放一個TOKEN,在進行表單提交時會驗證這TOKEN是否在SESSION上,如果在就執行這個表單的操作,如果TOKEN不在或者根本沒提交TOKEN那么說明表單是偽造的,我們直接截斷操作。具體流程如下:
防護代碼編寫:
測試
我們分別寫兩個文件分別是index.php用于提交表單,xss.php用于驗證表單
index.php
xss.php
可以看到我們代碼非常簡單,只要我們通過動態的TOKEN驗證,那就會輸出check success,否則輸出NO-TOKEN!
首先我們直接提交表單是沒有問題的直接返回成功
但是我們F12將TOKEN值刪除再提交呢?
可以看到會直接截斷
web防御中的代碼安全:
感謝你的閱讀,相信你對“WEB開發中常見漏洞防御方法是什么”這一問題有一定的了解,快去動手實踐吧,如果想了解更多相關知識點,可以關注億速云網站!小編會繼續為大家帶來更好的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。