Desidero fornire agli utenti del mio sito Web accesso in sola lettura arbitrario a un database SQLite3 , senza consentire loro di scrivere sul database o fare altri danni allo . Come?Database sqlite3 di sola lettura sicuro
Rendere il file db sola lettura aiuta un po ', ma i comandi come "Attach", ".load" e ".output" permettono alle persone di leggere/scrivere altri file, che non possono essere protetti.
Naturalmente, se conoscessi tutti questi comandi, mi limiterei a filtrarli, ma sono principalmente preoccupato per i comandi a cui non ho pensato.
ho cercato brevemente di modificare il codice sorgente di sqlite3 per non consentire operazioni di scrittura, ma questo è più difficile di quanto sembri: anche l'istruzione SELECT sembra fare alcuni inserti interni/etc.
Nota:ho considerato gli attacchi DOS, e sarà ulimit cputime a 5s o qualcosa. La mia preoccupazione principale è il danneggiamento di file/"hacking", non di DOS.
chroot() può funzionare, ma sembra estremo.
Pensieri?
MODIFICA: Wow, ho davvero chiesto questo 3+ anni fa?
Da allora, I've actually written a program to do this.
che credo sia ragionevolmente sicuro (ma potrei sbagliarmi).
Immagino di essere davvero alla ricerca di una "meta-soluzione" qui. Ad esempio, se eseguissi il mio intero sistema su un CD di sola lettura, non dovrei preoccuparmi di ciò che sqlite3 può/non può fare. Nel mio caso è troppo estremo, ma l'idea generale è che voglio trovare una soluzione che funzioni senza le proprietà sqlite3. – barrycarter