Mysql
 sql >> Database >  >> RDS >> Mysql

Database PHP/SQL per interrogare le buone pratiche e la sicurezza

La risposta di Javier che ha il collegamento owasp è un buon inizio.

Ci sono alcune altre cose che puoi fare di più:

  1. Per quanto riguarda gli attacchi SQL injection, puoi scrivere una funzione che rimuoverà le istruzioni SQL comuni dall'input come " DROP " o "DELETE * WHERE", in questo modo:

    *$sqlarray =array( " DROP ","o 1=1","union select","SELECT * FROM","select host","create table","DAgli utenti","utenti DOVE");*

    Quindi scrivi la funzione che verificherà il tuo input rispetto a questo array. Assicurati che tutte le cose all'interno di $ sqlarray non siano input comuni dei tuoi utenti. (Non dimenticare di usare strtolower su questo, grazie lou).

  2. Non sono sicuro che memcache funzioni con PHP 4, ma puoi mettere in atto una protezione antispam con memcache consentendo solo un certo accesso IP remoto alla pagina process.php X quantità di volte in un periodo di tempo Y.

  3. I privilegi sono importanti. Se hai solo bisogno dei privilegi di inserimento (ad esempio, l'elaborazione dell'ordine), dovresti accedere al database nella pagina di elaborazione dell'ordine con un utente che ha solo i privilegi di inserimento e forse selezionare. Ciò significa che anche se un'iniezione SQL è andata a buon fine, potrebbero eseguire solo query INSERT / SELECT e non eliminare o ristrutturare.

  4. Metti importanti file di elaborazione php in una directory come /include. Quindi non consentire a tutti gli IP di accedere a quella directory /include.

  5. Metti un MD5 salato con l'agente dell'utente + remoteip + il tuo sale nella sessione dell'utente e fallo verificare ad ogni caricamento della pagina che l'MD5 corretto sia nel suo cookie.

  6. Non consentire determinate intestazioni (http://www.owasp.org/index.php/Testing_for_HTTP_Methods_and_XST ). Disabilita le intestazioni PUT(se non hai bisogno di caricare file)/TRACE/CONNECT/DELETE.