Avere codice dannoso memorizzato nel DB

2

Diciamo che c'è un sito web che ha un campo di input da cui l'input è salvato in un database e poi visualizzato da qualche altra parte sul sito web.

  • È sicuro solo disinfettare / uscire dall'output, quando vengono visualizzati i dati?

  • Devi anche sfuggire all'input per impedire che dati dannosi entrino nel database in primo luogo?

La cosa di cui sono preoccupato è che anche se l'applicazione gestisce l'output, ad esempio, sfuggendo i dati dal database, ma alcune altre applicazioni potrebbero non disporre di un tale meccanismo per proteggere gli utenti a cui vengono visualizzati i dati.

È sicuro tenere il codice malevolo memorizzato nel tuo database per non modificare l'input dell'utente finché puoi evitare che faccia male all'utente?

    
posta Dropout 26.05.2016 - 10:26
fonte

1 risposta

6

Secondo me è un brutto modo di avere dati sfuggiti nel database. Poiché le regole di escape variano a seconda dell'input, un mezzo di output (HTML, JSON, ...) appartiene al punto in cui si immettono e si generano i dati e non nel database.

Raccomando di utilizzare una architettura multitier dove il livello dati (cioè il database) contiene i dati semplici (senza escape) , il livello logico (cioè la logica aziendale) funziona su questi semplici dati e solo il livello di presentazione (es. sito web, API REST, ...) si occupa dei dati di escape e di escape. In questo modo i dati saranno correttamente senza caratteri di escape (input) ed escaped (output) a seconda delle regole di escape dei vari mezzi di input e output (HTML, JSON, PDF, YAML, qualunque cosa ...).

... but some other application may not have such mechanism to protect the users which the data is displayed to.

Se temi questo tipo di applicazioni non funzionanti, dovresti anche temere che le applicazioni utilizzino dati pre-escape con l'escape HTML per l'emissione di JSON o quali dati di escape anche se sono già stati salvati nel database ecc. Devi avere regole chiare su come i dati sono memorizzati nel database (che include non solo l'escape ma anche codifiche di caratteri come UTF-8) e le applicazioni devono conoscere e seguire queste regole.

    
risposta data 26.05.2016 - 10:44
fonte

Leggi altre domande sui tag