簡體   English   中英

使用 Node.js 和 MySql 中的查詢加密數據

[英]Encrypting data using query in Node.js and MySql

使用 node.js 中的查詢加密 MySql 中發布的數據是否安全?

我試過這樣的東西,它在加密方面工作得很好,但我不知道它到底有多安全,我在這個領域幾乎是一個初學者。

db.query('INSERT INTO questions (content) VALUES(aes_encrypt(?, "key"))', 
    [content], err => {
        if(err){
            console.log(err);
        }
        else{
            res.send("succesfully posted")
        }
    })

假設我想加密密碼,這樣它就可以免受攻擊者等可能試圖從數據庫中獲取數據的威脅

密碼有兩個主要威脅。

用戶與API之間的攔截

您需要讓客戶端(通常是瀏覽器)加密數據。 在數據庫中執行此操作為時已晚。

使用 HTTPS 而不是普通的 HTTP。

我看到有一些庫設計用於在將數據發送到服務器之前對其進行加密。

HTTPS 非常出色。 不要嘗試使用現成的加密庫來滾動您自己的安全傳輸層; 只需使用 HTTPS

您還需要保護 API 服務器和數據庫服務器之間的連接。 這通常不是問題,因為它們通常發生在同一台機器上,或者在它們之間具有相當私有網絡連接的兩台機器上。 如果您的數據庫和 API 服務器在不同的機器上運行並通過共享網絡進行通信,您需要對此進行更多調查。

從易受攻擊的服務器中收獲

如果您的數據庫服務器受到威脅,那么攻擊者可以讀取密碼。

在這個階段,對於您的網站來說已經太晚了,知道密碼的攻擊者不會對您造成更直接的傷害。

然而,由於許多用戶有回收密碼的習慣,這給了攻擊者一堆密碼和用戶名/電子郵件地址,以便在其他網站上嘗試。

這會傷害您的用戶並損害您的聲譽。

僅存儲散列密碼。 這個答案涵蓋了使用 bcrypt 做到這一點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM