Autore Topic: Login con dati su database online  (Letto 798 volte)

Offline Trotto23

  • Utente junior
  • **
  • Post: 94
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows Vista
Login con dati su database online
« il: 25 Giugno 2014, 17:20:07 CEST »
0
Devo fare una schermata di login. Il database è hostato lo ho su altrvista. Per fare questo qual'è la via migliore e più performante. Richiesta HTTP post con un file php ?

Offline katte

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Nexus5
  • Sistema operativo:
    Windows8.1
Re:Login con dati su database online
« Risposta #1 il: 26 Giugno 2014, 08:30:20 CEST »
0
Direi che la scelta di fare una richiesta http a una pagina php è la cosa migliore.
Se non altro metti un layer in più tra la rete e il db.

Per una app seria però, un hosting non è il top della sicurezza, e provo a spiegarti il perchè..
Un virtual host di norma condivide sullo stesso ip più siti web. Questo fa si che tu non possa associare al virtual host un certificato ssl e abiitare quindi un https.
Morale, quando la tua app farà richiesta al file php di accedere al db, dovrà, immagino, passargli utente e pass.
Probabilmente passerai questi dati tramite get o post, i quali non saranno criptati e liberamente sniffabili.
Hai quindi due soluzioni.
Prendere un virtual server + certificato ssl e abilitare https.
Inventarti qualche soluzione per inviare i dati della post criptandoli.
Il primo metodo è sicuramente quello più complesso ma consigliabile.

Offline Trotto23

  • Utente junior
  • **
  • Post: 94
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows Vista
Re:Login con dati su database online
« Risposta #2 il: 26 Giugno 2014, 08:37:45 CEST »
0
Se il mio lavora fosse quello del solo realizzo dell'applicazione però questi problemi che sopra mi hai citato non mi riguarderebbero, giusto?
Android dispone di qualche algoritmo di crepitazione utilizzabile anche in php?
« Ultima modifica: 26 Giugno 2014, 08:41:57 CEST da Trotto23 »

Offline katte

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Nexus5
  • Sistema operativo:
    Windows8.1
Re:Login con dati su database online
« Risposta #3 il: 26 Giugno 2014, 08:42:52 CEST »
0
No, ti riguarderebbero eccome.
La tua app deve sapere come connettersi al server.
Se ti connetti a un https l'app deve negoziare la connessione.

Se usi altri accrocchi deve sapere come questi accrocchi sono fatti e sfruttarli.

Morale, a meno che questa app non sia un puro esercizio per imparare, allora la sicurezza per voi DEVE essere un punto focale e non potete esimervi dal pensare da subito in una ottica di sicurezza.


E' da un po' che penso di estendere la classe AsyncHttpClient per introdurgli qualche accrocchio per un login e una comunicazione un minimo sicura.
Se c'è qualche volenteroso che ha voglia di contribuire si potrebbe fare qualcosa insieme.

Offline Trotto23

  • Utente junior
  • **
  • Post: 94
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows Vista
Re:Login con dati su database online
« Risposta #4 il: 26 Giugno 2014, 08:44:46 CEST »
0
Si potrebbe criptare login e password nell'applicazione e decapitare nel file php no?
Conosci qualche algoritmo di crittografia che hanno in comune sia android che php ?

Prendere un virtual server + certificato ssl e abilitare https.

Questo dovrebbe farlo il committente no?
« Ultima modifica: 26 Giugno 2014, 08:46:34 CEST da Trotto23 »

Offline katte

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Nexus5
  • Sistema operativo:
    Windows8.1
Re:Login con dati su database online
« Risposta #5 il: 26 Giugno 2014, 09:38:47 CEST »
0
Ce ne sono mille in comune.
Ma non è quello il punto.
Se uno sniffa il traffico può comunque accedere al db.

Bisogna agire in questo modo.
1) L'app chiede al server la sua chiave pubblica.
2) L'app genera al suo interno una chiave pubblica e privata in modo random.
3) L'app invia una richiesta di login criptando il tutto con la chiave pubblica del server e passa al server la sua chiave pubblica appena creata.
4) Il server decripta il messaggio con la sua chiave privata e fa ciò che deve fare.
5) Il server risponde all'app usando la chiave pubblica dell'app appena ricevuta.
6) L'app decripta il messaggio usando la sua chiave privata.

Questo va ripetuto per ogni comunicazione.
A meno che non venga aggiunto un sistema basato su session id etc.etc...

Ovviamente questi dati devono passare nella parte POST delle varie richieste http.

Il punto debole di tutto ciò sta nella creazione della chiave random.
Non esistendo un metodo sicuro per generare cose random, un attaccante che sniffa e che trova una falla nella generazione della chiave può poi far più o meno di tutto quello che vuole.

Citazione
Citazione
Citazione da: katte - Oggi alle 08:30
Prendere un virtual server + certificato ssl e abilitare https.

Questo dovrebbe farlo il committente no?

Si, o comunque chi gestisce il virtual server

Offline Trotto23

  • Utente junior
  • **
  • Post: 94
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows Vista
Re:Login con dati su database online
« Risposta #6 il: 26 Giugno 2014, 09:41:35 CEST »
0
Ma invece di complicarsi la vita se si prendere un virtual server + certificato ssl e si abilita https (come hai detto prima te) non si fa prima?

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:Login con dati su database online
« Risposta #7 il: 26 Giugno 2014, 09:47:12 CEST »
0
Sono d'accordo con katte.

Mi intrometto solo per nominare una alternativa: usare nel proprio sito i "login system" di piattaforme popolari, come Google o Facebook. Non è detto che sia applicabile all'applicazione o al caso specifico, magari complica anche un po' la realizzazione, ma la sicurezza non è più un problema.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline katte

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Nexus5
  • Sistema operativo:
    Windows8.1
Re:Login con dati su database online
« Risposta #8 il: 26 Giugno 2014, 09:55:31 CEST »
0
Ma invece di complicarsi la vita se si prendere un virtual server + certificato ssl e si abilita https (come hai detto prima te) non si fa prima?

Certo che si!
Con https il canale è interamente criptato, quindi, anche se è SEMPRE buona cosa criptare i dati di login, puoi stare tranquillo che se anche uno si mette a sniffare la tua comunicazione non ci tira fuori nulla.

Citazione
Sono d'accordo con katte.

Mi intrometto solo per nominare una alternativa: usare nel proprio sito i "login system" di piattaforme popolari, come Google o Facebook. Non è detto che sia applicabile all'applicazione o al caso specifico, magari complica anche un po' la realizzazione, ma la sicurezza non è più un problema.

A questo non avevo pensato..
Ma alla fine i vari servizi di login, non passano i dati dell'utente al sito per creare sul db del sito un record per l'utente?
In questo caso il problema di sicurezza ci sarebbe comunque no?

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:Login con dati su database online
« Risposta #9 il: 26 Giugno 2014, 10:13:50 CEST »
+1
A questo non avevo pensato..
Ma alla fine i vari servizi di login, non passano i dati dell'utente al sito per creare sul db del sito un record per l'utente?
In questo caso il problema di sicurezza ci sarebbe comunque no?

Un minimo di informazioni sull'identità dell'utente devono starci (nome, avatar, email). Però il valore aggiunto sta nel fatto che il login vero e proprio, incluso l'inserimento della password, avviene su server google/facebook/xxx. Ne consegue che il tuo sito NON deve memorizzare password e NON può essere oggetto di attacchi per forzare il login.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline katte

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Nexus5
  • Sistema operativo:
    Windows8.1
Re:Login con dati su database online
« Risposta #10 il: 26 Giugno 2014, 11:02:47 CEST »
0
Un minimo di informazioni sull'identità dell'utente devono starci (nome, avatar, email). Però il valore aggiunto sta nel fatto che il login vero e proprio, incluso l'inserimento della password, avviene su server google/facebook/xxx. Ne consegue che il tuo sito NON deve memorizzare password e NON può essere oggetto di attacchi per forzare il login.

Direi che potrebbe essere accettabile come soluzione..
Appena avrò un attimo di tempo darò una occhiata sui dettagli implementativi.