Domanda

Quali sono i modi migliori (o almeno i più comuni) in ASP (VBScript) per la gestione dell'input? Le mie preoccupazioni principali sono iniezioni di HTML / JavaScript & Amp; Iniezioni di SQL. C'è qualche equivalente a htmlspecialchars o addslashes di PHP, eccetera? O devo farlo manualmente con qualcosa come le funzioni di sostituzione delle stringhe?

È stato utile?

Soluzione

La linea di fondo è questa:

  1. Inserisci sempre l'input dell'utente in codice HTML prima di scriverlo nella tua pagina. Server.HTMLEncode() lo fa per te.
  2. Utilizzare sempre query con parametri per interfacciarsi con un database. Gli oggetti ÀDODB.Command e ADODB.CommandParameter sono la scelta giusta qui.
  3. Utilizzare sempre l'utilità URLScan e il blocco IIS sul server IIS che esegue il rendering della pagina, a meno che non siano versione 6 e successive, che non richiedono più questi strumenti.

Se ti attieni ai punti 1 e 2 in modo sleale , non riesco a pensare a molto che possa andare storto.

La maggior parte delle vulnerabilità deriva dalla non corretta codifica dell'input dell'utente o dalla creazione di stringhe SQL da esso. Se per qualche motivo arrivate al punto in cui l'input dell'utente della codifica HTML vi ostacola, avete trovato un difetto di progettazione nella vostra applicazione.

Altri suggerimenti

Vorrei aggiungere all'elenco Tomalak un altro punto.

Evitare l'uso della concatenazione dei valori dei campi nel codice SQL. Cioè, in alcuni casi una procedura memorizzata può creare un codice SQL in una stringa per eseguirla successivamente. Questo va bene a meno che non venga usato un valore di campo testuale come parte della sua costruzione.

Un parametro di comando può proteggere il codice SQL progettato per inserire un valore dall'essere dirottato nell'esecuzione di SQL indesiderato, ma consente a tale SQL indesiderato di diventare dati nel database. Questa è una votabilità di primo livello. Esiste una vunerability di iniezione di secondo livello se il valore del campo viene quindi utilizzato in alcune concatenazioni di stringhe SQL all'interno di una procedura memorizzata.

Un'altra considerazione è che questa è solo una protezione minima. Tutto ciò che sta facendo è rendere innocui i tentativi di attacco. Tuttavia, in molti casi potrebbe essere meglio aggiungere a questo un sistema che impedisce l'inserimento di tali dati in modo ulteriore e / o modifica gli amministratori di un potenziale attacco di iniezione.

Qui è dove la convalida dell'input diventa importante. Non conosco strumenti che lo facciano per te, ma alcune semplici espressioni regolari potrebbero aiutarti. Ad esempio, & Quot; & Lt; \ w + & Quot; rileverà il tentativo di includere un tag HTML nel campo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top