本篇文章帶大家聊聊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 伺服器端的時候, 對前端傳來的資料統統處理一下就行了 ,也就是進行特殊字元跳脫 (所有的跳脫字元后都需要 加上;這個特殊符號 由於無法演示 我截圖的時候去掉了
開發 Node 伺服器端,使用 xss 這個npm包
,把前端傳入的資料都使用這個包裹一下就行
3、密碼加密
假如我們資料庫被入侵, 其中最不應該洩露的就是用的資訊了
因為攻擊者可以拿著使用者的賬戶密碼去嘗試登入其他的系統
這個就需要在資料庫不用明文儲存使用者的密碼
資訊, 在存入資料庫之前把密碼通過自定義 key 加密一下
, 當然這個 key 需要你自己獨享 不能洩露
或者通過其他密碼演演算法加密也是可以的
最近也是在學習 Node 相關的知識, 以上就是關於開發 Node 伺服器端,常見的三種安全防範手段
原文地址:https://juejin.cn/post/7199329705706324027
更多node相關知識,請存取:!
以上就是淺析Node常見的三種關於安全方面的處理的詳細內容,更多請關注TW511.COM其它相關文章!