首頁  >  文章  >  web前端  >  淺析Node常見的三種關於安全性方面的處理

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

青灯夜游
青灯夜游轉載
2023-02-13 19:26:352155瀏覽

這篇文章帶大家聊聊Node常見的三種安全防範手段,主要講解在開發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語句這樣就極其的危險 【相關教程推薦:nodejs視頻教程程式設計教學

-- 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常見的三種關於安全性方面的處理

處理方案

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

3、密碼加密

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

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

#處理方式

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

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

二、結語

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

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

更多node相關知識,請造訪:nodejs 教學

以上是淺析Node常見的三種關於安全性方面的處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.cn。如有侵權,請聯絡admin@php.cn刪除