Non esiste una soluzione sicura oggi. Una delle possibili soluzioni potrebbe essere htsql: http://htsql.org/
Tuttavia, lì si utilizzano gli indirizzi Web per la query, anche con https le query saranno scritte in modo semplice!
Si dovrebbe/potrebbe utilizzare un piccolo server web per gestire le richieste. In alternativa è possibile scrivere un'app o utilizzare un server Postgres locale per gestire la connessione (in questo caso sarà comunque necessario un qualche tipo di server web).
Il problema è molto semplice: i tuoi browser sono limitati nei protocolli per parlare con il web e Postgres non è in questo elenco. In realtà non si dovrebbe cercare di superare questo problema, l'utilizzo di un'architettura server-client è un'ottima soluzione. Formatta la tua richiesta con JS per renderla il più piccola possibile e lascia che i tuoi script del web server lo interpretino in richieste sql funzionali. La risposta può essere analizzata in una risposta più breve, quindi in un trasferimento di dati SQL, e devi solo interpretarla dalla tua parte. Dal momento che creerai interperer su tutti i lati, otterrai un'astrazione più elevata quindi in caso di connessione diretta in db e quindi l'indipendenza verso i motori di back-end che utilizzi.
fonte
2017-07-09 22:34:49
@ Kev - non sono sicuro che sia una buona idea.Inserire le informazioni di connessione al database nel server richiede di proteggere solo il singolo computer, ma come proteggere il PC dell'utente affinché non venga dirottato da qualcuno? – ajreal
@ajreal, non è vero indipendentemente da quanti livelli ci sono? Se si dispone di ruoli e privilegi di database ben definiti, non dovrebbe essere un problema. (Soprattutto per un'app intranet, per esempio.) Non dirmi che stai assumendo la strategia dell'account single-superuser ... :) – Kev
@Kev - Non si tratta di privilegi utente-per-account, l'idea probabilmente incoraggerà l'esposizione maggiori informazioni al lato client. Oltre a ciò, chiedendo che la rete viaggi tra client-> database è paragonabile a server-> database, potenzialmente il database non è in grado di rilasciare le risorse prima? – ajreal