Autore Topic: Sicurezza connessione DB remoto  (Letto 1771 volte)

Offline Pask85

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S Plus
  • Sistema operativo:
    Windows 7
Sicurezza connessione DB remoto
« il: 16 Marzo 2013, 10:34:56 CET »
0
Salve ragazzi,

volevo aprire questo topic per discutere sull'argomento sicurezza nell'ambito di una connessione a DB remoto.

In giro per internet si trovano molti esempi su come connettersi ad un database remoto, ma in nessuno si parla di quali precauzioni bisogna prendere per rendere la connessione sicura.

Gli articoli sul web ti guidano nella scrittura di un file PHP usato come web service, dove tramite credenziali si fa partire la connessione al DB. Però le mie prime perplessità sono:

risulta sicuro scrivere, su di un file php, le credenziali del nostro DB? Anche perchè questo file deve essere accessibile in lettura quindi qualcuno potrebbe riuscire a leggere il codice al suo interno e recuperare host utenza e password del db.

Inoltre credo sia possibile inserire, al posto di nome utente o password, del codice dannoso che andrebbe ad intaccare il nostro DB.

Quindi mi piacerebbe leggere il parere di esperti ed i loro consigli per la creazione di un DB ed una connessione sicura.

Grazie,

Pasquale.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Sicurezza connessione DB remoto
« Risposta #1 il: 16 Marzo 2013, 11:05:00 CET »
0
Non mi considero esperto, ma almeno le minime misure di sicurezza potrebbero essere applicate. Tipo evitare che il file PHP sia leggibile, ma solo eseguibile (cosa abbastanza ovvia). Scrivere il PHP in modo da evitare SQL injection (esempio usando i prepared statement) e in generale fare una buona data validation. Accedere al PHP solo tramite https. Creare per il database una utenza "user" cioè con il minimo indispensabile dei diritti e far passare al client le credenziali al PHP (ma questo dipende dalla tua applicazione).
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Pask85

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S Plus
  • Sistema operativo:
    Windows 7
Re:Sicurezza connessione DB remoto
« Risposta #2 il: 16 Marzo 2013, 11:12:22 CET »
0
Ecco, riusciamo a portare avanti il discorso con alcuni esempi?

Credo che sarebbe molto utile a tutto il forum dato che su internet tutti gli esempi che ho trovato sono praticamente identici e senza il minimo sguardo alla sicurezza.

Magari i punti potrebbero essere:
1) Come creare un collegamento HTTPS
2) Come evitare SQL injection
3) Come fare una buona data validation
4) Come creare utenze e permessi su database MySql
...

Io vorrei fare un discorso generale, non inerente alla mia applicazione, ma portare avanti un topic che sia di aiuto a tutti quelli che vogliono creare applicazioni che hanno uno scambio di dati con un DB remoto.

Vi piace come idea?

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Sicurezza connessione DB remoto
« Risposta #3 il: 16 Marzo 2013, 11:47:01 CET »
0
il problema è che su 4 punti che hai citato 1 (solo in parte) è inerente ad android, il resto è tutto PHP/MySQL e non è quindi inerente android nello specifico (e quindi questo forum).
Sicuramente se cerchi i tuoi punti come casi isolati (non specifici per android) trovi tanti esempi
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Pask85

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S Plus
  • Sistema operativo:
    Windows 7
Re:Sicurezza connessione DB remoto
« Risposta #4 il: 16 Marzo 2013, 11:55:16 CET »
0
Hai ragione, ma io chiedo a voi moderatori: non sarebbe interessante raggruppare questi argomenti che, anche se non propri del linguaggio android/java, tornerebbero utili a chi ha necessità di sviluppare un'app che interagisce con un DB remoto?




Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Sicurezza connessione DB remoto
« Risposta #5 il: 16 Marzo 2013, 12:09:54 CET »
0
Hai ragione, ma io chiedo a voi moderatori: non sarebbe interessante raggruppare questi argomenti che, anche se non propri del linguaggio android/java, tornerebbero utili a chi ha necessità di sviluppare un'app che interagisce con un DB remoto?
c'è questa sezione: Altri linguaggi di programmazione - Android Developers Italia
ma ovviamente per le discussioni, i tutorial non ci sono, proprio perchè è un forum Android.

Personalmente, non ho nulla e non ho neanche interesse a creare tutorial su quelle parti li, in primo luogo perchè non riguardano android e io sono interessato a quello, in secondo luogo perchè io non farei mai una connessione diretta ad un database ma passerei attraverso dei servizi web (https o meno) con un servizio di autenticazione.
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Sicurezza connessione DB remoto
« Risposta #6 il: 16 Marzo 2013, 15:52:29 CET »
0
Concordo con Nicola.

Aggiungo che non ha molto senso disperdere forze per cercare di coprire argomenti già largamente trattati altrove (e molto meglio), quando ci sarebbe molto ancora da coprire su Android.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Pask85

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S Plus
  • Sistema operativo:
    Windows 7
Re:Sicurezza connessione DB remoto
« Risposta #7 il: 16 Marzo 2013, 19:31:45 CET »
0
Io posso condividere la mia esperienza che sta nel vagare inutilmente su internet alla ricerca di una discussione che parlasse di un modo sicuro per far parlare un'applicazione Android ed un database remoto, ovunque c'era il semplice esempio tramite il web service in php con restituzione dei valori tramite Json o Echo.

Nessuno parlava di come rendere sicura quella connessione. Ecco perchè avevo pensato che sarebbe stato utile creare un topic dove sviluppare la parte "sicurezza" non trattata da altri forum.

In ogni caso i moderatori siete voi. Se non siete interessati a sviluppare questo argomento allora possiamo chiudere anche il topic.


Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Sicurezza connessione DB remoto
« Risposta #8 il: 16 Marzo 2013, 22:03:09 CET »
0
Io posso condividere la mia esperienza che sta nel vagare inutilmente su internet alla ricerca di una discussione che parlasse di un modo sicuro per far parlare un'applicazione Android ed un database remoto, ovunque c'era il semplice esempio tramite il web service in php con restituzione dei valori tramite Json o Echo.

Nessuno parlava di come rendere sicura quella connessione. Ecco perchè avevo pensato che sarebbe stato utile creare un topic dove sviluppare la parte "sicurezza" non trattata da altri forum.

In ogni caso i moderatori siete voi. Se non siete interessati a sviluppare questo argomento allora possiamo chiudere anche il topic.

Può darsi che io non abbia capito (e qui puoi tranquillamente farmelo notare), ma a me sembra che tu stia chiedendo come rendere sicuro l'accesso ad un database remoto, o comunque come deve essere un database remoto per avere un accesso sicuro. Per capire: il database a cui devi accedere esiste già, oppure devi ancora scegliere come crearlo? Nel primo caso puoi già valutare (o chiedere) qual'è il modo più sicuro di accedervi. Nel secondo potresti per esempio farti un db mysql con php per accedervi, ma già se vuoi andare su https e permessi mysql particolari allora un hosting comune non va bene.

Il fatto che tu intenda usare android per accedervi, non cambia la risposta a queste domande. Dipende da cosa ti serve.

NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Sicurezza connessione DB remoto
« Risposta #9 il: 18 Marzo 2013, 11:09:44 CET »
0
In ogni caso i moderatori siete voi. Se non siete interessati a sviluppare questo argomento allora possiamo chiudere anche il topic.

Il fatto è che rendere sicuro uno sito web e un database, indipendentemente dalla tecnologia, non è un argomento che si presta a essere trattato esaustivamente e chiaramente attraverso un tutorial.

Comunque, ti indico brevemente quello su cui secondo me dovresti orientarti per avere un minimo di sicurezza.

Parte web:

0 - Indagare su framework/librerie già esistenti e che possano aiutare nello scrivere buon codice. Scrivere un codice robusto è la base per scrivere codice sicuro.

Un micro-framework che ho trovato molto interessante è Silex: introduzione e utilizzo.

1 - Validazione input

E' assolutamente importante validare gli input che ci vengono mandati abbiano tipi e valori consistenti con quanto ci aspettiamo. Ad esempio se un certo parametro deve essere un un id intero, prima validiamo che sia un intero e successivamente lo usiamo, ad esempio per fare una query su db. Idem per una login, prima validiamo che i dati passati siano nella forma giusta (es una email) e che contengono solo caratteri che ci aspettiamo.

Dati un occhio alle funzioni:

PHP: filter_var - Manual
PHP: filter_input - Manual
Silex ha già qualcosa built-in: Usage - Documentation - Silex - The PHP micro-framework based on Symfony2 Components

2 - Accesso al DB:

Anche qui, non credo ci sia la formula "accesso sicuro al 100%" ma ci sono delle best-practice. Io comunque mi orienterei verso una libreria tipo PDO (built-in in php da anni):

Guida all'utilizzo di PDO | Articoli PHP | PHP | Mr.Webmaster
Discussione interessante a riguardo: php - Are PDO prepared statements sufficient to prevent SQL injection? - Stack Overflow