Siamo 1-3 ragazzi che mantengono un sito web sviluppato in casa abbastanza grande ma goffo. Con circa 900+ tabelle mysql e un sacco di codice di accesso ai dati in PHP. Diciamo che è un'enorme quantità di codice per solo 1 o 2 ragazzi per correggerli tutti. Quindi abbiamo deciso di risolvere il maggior numero possibile di vulnerabilità (dichiarazione preparata) ma allo stesso tempo accettiamo il fatto che è impossibile raggiungere il 100% di sql-injection proof.
Abbiamo elencato molte cose che potremmo "facilmente" fare per ridurre il rischio / danno dagli hacker di SQLi. Uno di questi è il modulo admin diviso in e il server interno che non è aperto a Internet, questo ha aiutato molto quando l'hacker (s) è riuscito a crackare la password admin ma non poteva fare molto male al sistema.
Ora ne vogliamo ancora di più: nascondendo l'id amministratore dal database, l'amministratore e l'id dei moderatori sono attualmente memorizzati in una tabella "Moderatori". Quindi pensiamo che sia più facile spostare l'ID dell'amministratore in qualche file (config), perché raramente aggiungiamo / rimuoviamo l'amministratore. L'id dei moderatori è ancora presente in quel tavolo. Ora gli hacker devono indovinare quale utente tra mezzo milione di record della tabella "utente".
La mia domanda: con il modulo di amministrazione non disponibile su Internet, il server di hosting (Ubuntu) è al riparo da conquistato dagli hacker? Nel frattempo, tolleriamo gli attacchi all'utente normale / moderatore e l'intrusione al DB.
P / S:
- Il proprietario del sito Web sta accumulando più $$ per la correzione SQLi definitiva.
- Sembra che anche le dichiarazioni preparate non siano sicure al 100%: Le istruzioni preparate sono sicure al 100% contro l'iniezione SQL?
- Anche un bambino sa che l'hard-coding è un grande "no no" ma che il meglio che possiamo pensare ....