Italian input / dialog box password

toro1950

Active Member
Licensed User
Buonaserata, dovrei proteggere l'app con una password inserita dall'utente, esiste un input box o un dialog box, che all'avvio dell'app chiede la password,
e prosegue con l'avvio se è giusta altrimenti fa uscire l'app? mi sarebbe piaciuto inserire una passoword anche per criptare il database ma sembra che SQL non abbia
questa prerogativa, io utizzio SQL con Xojo su pc e questa prerogativa ce l'ha.
 

Sagenut

Expert
Licensed User
Longtime User
La schermata dove richiedere la password la puoi fare tu, con la quale proseguire con l'app oppure uscire.
Per quanto riguarda criptare il DB potresti scrivere nei vari campi i valori già criptati.
Certo che poi non potresti fare certe ricerche come con i dati in chiaro.
Perlomeno non così facilmente come faresti di solito.
Come protezione per aprire l'app però secondo me sarebbe meglio utilizzare l'impronta digitale.
Ma l'utente potrebbe avere un telefono sprovvisto di tale funzione e quindi servirebbe comunque anche l'opzione PIN o Password.
 

toro1950

Active Member
Licensed User
se ho ben capito dovrei aggiungere una pagina con una editext ed un pulsante? giusto?
quindi non esiste un dialog box o un input text.
Ho una pagina di configuazione che si apre al primo avvio, modificandola potrei utilizzare questa, Grazie Sagenut
 

Star-Dust

Expert
Licensed User
Longtime User
Esiste un dialogo con password e esiste sql criptato. Cerca meglio nel forum
 

toro1950

Active Member
Licensed User
Star-Dust ti ringrazio del consiglio, per la password protezione App ho risolto egregiamente seguendo il consiglio di Sagenut con solo poche righe di codice
e niente altro, mentre per un database criptato sono ancora interessato, facendo una ricerca sembra che dovrei utilizzare SQLCipher, giusto? o c'è altro?
 

Star-Dust

Expert
Licensed User
Longtime User
Si SQLcipher.
 

toro1950

Active Member
Licensed User
Grazie Star-Dust ho utilizzzato SQLcipher, è smplicissimo da utilizzare, ho dovuto cambiare solo la inizializzazione del database per inserire la password, per tutto il resto; inserimento, modifiche e delete non ho modificato nulla, il codice esistente è compatibile. Mangiando viene l'appetito, ho notato che inserire la password ogni volta per sbloccare l'app è fastidioso, Sagenut mi aveva accennato di utilizzare l'impronta digitale per lo sblocco dell'App , qualcuno può aiutarmi a tale scopo
 

toro1950

Active Member
Licensed User
Grazie Sagenut, ho scaricato l'esempio ma mi da un errore; Maven artifact non trovato, sembra che non ho qualche libreria aggiornata,
cosa devo aggiornare?
 

LucaMs

Expert
Licensed User
Longtime User
Un po' di commenti e domande (random, non in ordine di importanza).

Considera che bypassare (un giorno, forse, useremo l'italiano ? , diciamo "aggirare") la faccenda password è piuttosto facile. Il cattivone potrebbe decompilare la tua app e dove scrivi qualcosa tipo:

If etPW.Text <> Password Then CloseApp

cambiare con un:

If False Then CloseApp

(in codice Java, non B4X, ricompilando).

Quanto sopra, però, non certo per utenti inesperti, solo per programmatori.


Impronta digitale.
Io ho disattivato questa impostazione sul mio smartphone, perché a volte, per motivi vari, magari il lettore un po' sporco, non funziona.
Inoltre, non è difficile trinciare il dito del proprietario ed usarlo per sbloccare l'app ?
O magari prendere la tua impronta da una superficie che hai toccato (usando polvere e nastro adesivo) ed usarla (ovviamente SCHERZO ?)

Infine avrei una domanda circa SQLCipher, ma per questo prima devo fare una ricerchina (mentre mi impicco nello sviluppare una cosetta... per me stesso non utilissima).
 

LucaMs

Expert
Licensed User
Longtime User
Infine avrei una domanda circa SQLCipher, ma per questo prima devo fare una ricerchina (mentre mi impicco nello sviluppare una cosetta... per me stesso non utilissima).
Quali passi hai eseguito per ottenere quanto hai scritto?
Grazie Star-Dust ho utilizzzato SQLcipher, è smplicissimo da utilizzare, ho dovuto cambiare solo la inizializzazione del database per inserire la password, per tutto il resto; inserimento, modifiche e delete non ho modificato nulla, il codice esistente è compatibile.
Ovvero, come hai creato il db cifrato?
 

toro1950

Active Member
Licensed User
Semplice, con il seguente codice, dopo avere spuntato la libreria SQLCipher
B4X:
    'in  Class_Globals
    Public SQL1 As SQLCipher
    Public SQLDataBasePath As String
    'in B4XPage_Created
   
    nomedb ="miodb.xls"
    SQLDataBasePath = xui.DefaultFolder
    If File.Exists(SQLDataBasePath, nomedb) = False Then
       
        SQL1.Initialize(SQLDataBasePath, nomedb, True,"password","")
        CreateDataBase
    Else
       
        SQL1.Initialize(SQLDataBasePath, nomedbpaz, True,"password","")
    End If
l'estensione .xls potrebbe far ridere ma ha uno scopo ben preciso, importare ed esportare un file db su un sito web con estensione .db
non è possibile, penso che venga visto come file pericoloso, esportarlo si può ma riprenderlo no, con .xls è possibile, a b4a non da
fastidio quindi mi è sembrata un ottima idea che potrebbe essere utile a tutti; l'esportazione ed importazione di un database è utile per
non perdere il database se si cambia cellulare, anche con sistemi operativi diversi
Per proteggere i dati qual'è la soluzione migliore? la mia app non ha dei dati tanto sensibili, ma il nr del cellulare viene considerato
sensibile, oltre a criptare il database ed inserire un password che altro si può fare?
 

LucaMs

Expert
Licensed User
Longtime User
Ah, quindi crei il database. Volevo assicurarmi che tu non ne copiassi uno non cifrato dalla File.DirAssets, dato che questo verrebbe inglobato nell'apk.

(Per l'estensione... capisco, ma magari la cambierei, visto che xls è la vecchia di Excel).
 
Top