sql >> Databáze >  >> RDS >> Mysql

MySQL šifrované sloupce

Nevím, jestli má smysl šifrovat data pomocí hash hesla uživatele, zejména pokud ponecháte samotný hash v databázi. V takovém případě kdokoli, kdo má přístup k zašifrovaným datům, může také získat přístup k hash hesel a data dešifrovat.

Dalším přístupem by bylo zašifrovat data pomocí klíče specifického pro aplikaci, který je osolený některými daty specifickými pro uživatele. Pak však čelíte dalšímu problému:jak bezpečně uložit klíč aplikace. Na tuto otázku neznám jednoduchou odpověď, ale ponechat ji ve zdrojovém kódu je pravděpodobně dost dobré, pokud se obáváte, že mohou být kompromitována data vaší databáze, ale nikoli samotný zdrojový kód, např. pokud je vaše databáze uložena mimo pracoviště (například Amazon S3).

Zasolení klíče aplikace s heslem uživatele pomáhá, pokud v databázi uchováváte pouze hash hesla, ale může představovat další bezpečnostní chybu:heslo uživatele musíte v relaci aplikace uchovávat jako prostý text.

Co se týče technického řešení, je celkem jednoduché a k dispozici je ukázkový kód . Můžete jej upravit následovně a zašifrovat data pomocí hesla aplikace osoleného hashem hesla:

INSERT INTO secure_table VALUES (
  1,
  AES_ENCRYPT(
    'plain text data',
    CONCAT(@application_password, @user_password))
);

V každém případě byste si heslo aplikace museli někde uložit, takže si nemyslím, že existuje snadný přístup, který by poskytoval dokonalé zabezpečení.

Další přístup, který mě napadá, je požádat uživatele o krátký PIN, který byste mohli použít jako šifrovací klíč. PIN by nebyl uložen v databázi, ale budete o to muset uživatele požádat pokaždé, když přistupujete k jejich datům.

A samozřejmě musíte myslet na proveditelnost šifrování. Bez dešifrování jej nebudete moci indexovat ani prohledávat. Pravděpodobně je vyžadována pro omezený soubor dat (např. číslo kreditní karty), ale daleko bych s tím nezacházel.



  1. Co je jednoduchý program nebo skript příkazového řádku pro zálohování databází SQL serveru?

  2. Spark Dataframes UPSERT to Postgres Table

  3. Microsoft Access Web App vs Desktop Database

  4. Migrace BLOB dat z MS SQL Serveru do MySQL