淺析Node常見的三種關於安全方面的處理

2023-02-13 22:00:33

本篇文章帶大家聊聊Node常見的三種安全防範手段,主要講解在開發Node伺服器端的時候, 三種關於安全方面的處理。

一、預防方式

1、 sql注入

這是一個最原始也最簡單的攻擊, 從 web2.0 開始有了人機互動後就出現的一種攻擊方式

其主要是通過輸入 sql 片段, 最終拼接成一段攻擊的 sql 程式碼

當我們使用 node 連線到資料庫的時候, 通常會在 node 端寫 sql 語句來進行資料庫查詢, 例如下方

-- 這是一個簡易的登入判斷sql語句, 輸入 username 和 password 在 users 表中進行使用者登入驗證,  然後獲取使用者的地址和年齡
select address, age from users where username=${username} and password=${password}
登入後複製

但是如果我在 username 中做點手腳 使他傳入的是一個sql語句這樣就極其的危險 【相關教學推薦:、】

-- username 輸入為 ali -- 
-- 上面這段 sql 就會被解析成這樣 
select address, age from users where username=ali -- and password=${password}
登入後複製

看上面的程式碼片段可以發現, -- 在sql中是屬於註釋的存在, 所以如果當我在 sql 查詢動態獲取使用者輸入的 username 欄位中, 如果結尾是 -- 就會把後面password的條件驗證去掉

也就是代表使用者無論輸入什麼 password, 只要 username 欄位在資料庫中存在就可以拿到對應的資訊

當然攻擊者也可以在後面繼續拼接刪庫的 sql 語句,這其實是更加危險的

-- username 輸入為 ali; delete from users where username="ali" --
-- 就會拼接成下面這種語句 這是極其危險的
select address, age from users where username=ali; delete from users where username="ali" -- and password=${password}
登入後複製

處理方案

在 node 開發中連線資料庫, 拼接sql語句是使用 mysql 這個npm包, 所以在這個包中也有對應 sql注入 攻擊的處理常式

可以使用 mysql.escape函數 , 對所有來源於前端的資料進行包裹一層, 這個函數會把 -- 或者其他的特殊字元進行跳脫,這樣就不會出現在sql語句中會有註釋的情況

2、xss 攻擊

這個攻擊我們作為前端應該是很熟悉的了

其攻擊方式就是在頁面的展示內中摻雜 Js 的程式碼以獲取網頁資訊

在我們開發 Node 伺服器端的時候, 對前端傳來的資料統統處理一下就行了 ,也就是進行特殊字元跳脫 (所有的跳脫字元后都需要 加上;這個特殊符號 由於無法演示 我截圖的時候去掉了

image.png

處理方案

開發 Node 伺服器端,使用 xss 這個npm包,把前端傳入的資料都使用這個包裹一下就行

3、密碼加密

假如我們資料庫被入侵, 其中最不應該洩露的就是用的資訊了

因為攻擊者可以拿著使用者的賬戶密碼去嘗試登入其他的系統

處理方式

這個就需要在資料庫不用明文儲存使用者的密碼資訊, 在存入資料庫之前把密碼通過自定義 key 加密一下, 當然這個 key 需要你自己獨享 不能洩露

或者通過其他密碼演演算法加密也是可以的

二、結語

最近也是在學習 Node 相關的知識, 以上就是關於開發 Node 伺服器端,常見的三種安全防範手段

原文地址:https://juejin.cn/post/7199329705706324027

更多node相關知識,請存取:!

以上就是淺析Node常見的三種關於安全方面的處理的詳細內容,更多請關注TW511.COM其它相關文章!