Sta aprendo una nuova connessione mysql per ogni query potenzialmente non sicura?

2

Sto facendo alcuni test unitari e ho notato che se faccio clic (o faccio clic su più persone) lo stesso filtro molto molto velocemente (molto preciso lo so;) alla fine ottengo un errore "The connection is already open." . So che un modo per risolvere questo problema è aprire nuove connessioni individuali per ogni query ogni volta che viene chiamato, ma mi chiedo se così facendo apre la mia app a un rischio per la sicurezza, forse un momento più facile di un attacco DoS / DDos?

Inoltre, la connessione viene chiusa una volta completata.

Se questo è un rischio, come posso (come fanno gli altri) risolvere questo problema?

    
posta Matthew Peters 18.09.2014 - 03:48
fonte

3 risposte

2

Mi sembra che tu stia incontrando problemi di sicurezza dei thread. La soluzione per questo, come hai scoperto, è di non riutilizzare le connessioni.

Alla tua domanda in particolare, no, non vi è alcun rischio per la sicurezza nell'aprire nuove connessioni ogni volta che è necessario connettersi al database. Non si dice quale tecnologia si sta utilizzando (oltre a MySQL), ma in genere se si seguono le buone pratiche di codifica, come solo restituendo i dati necessari e chiudendo le connessioni non appena si arriva a destinazione, non è necessario qualsiasi aumento significativo del rischio di attacchi DoS rispetto a quando si riutilizzano le connessioni e potrebbero esserci anche meno eliminando i problemi di threading che si stanno verificando ora. Inoltre, se la tecnologia di provider di dati che stai utilizzando offre il pool di connessioni, questo può eliminare quasi completamente l'impatto sulle prestazioni della creazione di nuove connessioni al database, rendendo il problema un non-problema.

Quindi, sì, dovresti creare una nuova connessione al database ogni volta che devi accedere al database. È l'opzione più sicura che hai.

    
risposta data 14.10.2014 - 21:44
fonte
0

Probabilmente non dovresti eseguire query di database per filtrare i dati.

Per quanto ne so, non ci sono rischi con l'apertura di più connessioni diverse da una perdita di prestazioni. Sembra che il problema possa essere risolto con un passaggio di messaggi asincroni.

Se le persone possono eseguire un attacco DoS facendo clic rapidamente su un pulsante di filtro, probabilmente si verificano problemi di architettura più gravi.

    
risposta data 14.10.2014 - 21:09
fonte
0

No, non è un rischio per la sicurezza aprire più connessioni simultanee a MySQL o qualsiasi altro vero database (MS Access non è un vero database). Sono fatti funzionare così.

Il rischio che puoi affrontare è se qualcuno avvia più connessioni al database di quante ne possa gestire. In questo caso, gli altri clienti non potranno essere serviti in tempo. Un DoS, efficacemente.

È possibile risolvere il problema utilizzando i pool di connessione per accedere al database e attenuare le connessioni multiple della stessa fonte utilizzando il filtro.

    
risposta data 14.10.2014 - 22:07
fonte

Leggi altre domande sui tag