query SQL con chiave inserita (come Wesley Murch suggests) non è una buona idea. Se lo fai:
update mytable set myfield = AES_ENCRYPT('some value', 'your secure secret key');
... e la query ottiene collegato (slowlog per inst.) La chiave segreta sicura viene catturato in formato testo, che non dovrebbe mai accadere. Tale query con la chiave segreta sarebbe visibile anche quando si esegue query come SHOW PROCESSLIST
.
Problema successivo dove memorizzare la chiave di sicurezza? Nel file PHP? È di nuovo un testo semplice.
Crittografia dei dati:
Usa/crittografia a chiave pubblica privata (http://en.wikipedia.org/wiki/Public-key_cryptography). PHP ha un buon supporto per questo.
- Le chiavi pubbliche possono essere memorizzate con l'utente in DB, è pubblico.
- La chiave privata può essere crittografata con la password dell'utente. Quando l'utente esegue il login, decifri la chiave privata e la memorizzi nei suoi cookie (se usi SSL, non è così male) o sessione. Entrambi non sono perfetti ma migliori del semplice testo nel file php.
- Utilizzare la chiave pubblica per crittografare, chiave privata per decrittografare.
- Solo l'utente avrà accesso ai propri dati.
Se vuoi saperne di più, puoi usare google "crittografia controllata dall'utente" o "privacy a zero conoscenza".
inserti SQL/XSS:
La migliore protezione sono al sicuro app. Nessun dubbio. Se vuoi metterlo in sicurezza, puoi usare PHP IDS per rilevare gli attacchi: https://github.com/PHPIDS/PHPIDS
Ho una buona esperienza con esso.
fonte
2014-12-19 14:46:03
Se lo si desidera proteggere, dovrebbe essere crittografato nel database MySQL, non solo durante il transito. – Jon
Se può essere decifrato da te, in genere può essere decifrato da qualcuno che ha accesso al tuo database. Forse hai bisogno di assumere un professionista? – sjdaws
Questa è una domanda terribilmente ampia, Jacob. Puoi focalizzarlo ancora? Se sei più interessato alla crittografia end-to-end (perché? Per garantire la riservatezza? Affinché i tuoi utenti si fidino di inviare i dati all'entità giusta?), Quindi estrai gli altri bit. Qual è il tuo background in questa area? Se è poco o nulla, lascia che ti suggerisca umilmente di fare qualche lettura offline: qualsiasi aiuto che possa rientrare in una risposta SO non sarà di grande aiuto. Il [OWASP] (https://www.owasp.org/index.php/Category:OWASP_Guide_Project) è un buon punto di partenza. –