Domanda

Al momento sto rivedendo le implicazioni di sicurezza di vari avvertimenti in una grande applicazione Java EE. Poiché la maggior parte del codice è di diversi anni, contiene molti usi dei tipi di raccolta prima:

List items = new List();

, piuttosto che i tipi di raccolta parametrizzata:

List<Item> items = new List<Item>();

L'unica implicazione di sicurezza mi viene in mente è che i tipi prime non possono essere staticamente tipo-controllati compilazione e potrebbe potenzialmente causare un errore di run-time come ClassCastException che, a seconda di dove ciò si verifica nel codice, potrebbe portare a una negazione del servizio.

Ci sono altre implicazioni dell'utilizzo di tipi prime che non sto pensando di?

È stato utile?

Soluzione

Non riesco a pensare a tutte le altre implicazioni di sicurezza.

Per implicazioni non di sicurezza, i tipi generici anche fare cast espliciti * nel bytecode per i tipi che restituiscono un generico. Naturalmente, questo è trasparente per l'utente, e sembra che il tipo restituito è il tipo generico.

Ad esempio:

List<Item> items = new ArrayList<Item>();
// .get(int) and remove(int) return Item automatically

* Questo accade a causa cancellazione di tipo .

Altri suggerimenti

La mancanza di sicurezza di tipo può portare a problemi di sicurezza. Per esempio consente di dire questo elenco è stato utilizzato per creare una query:

"select name from users where id="+items[x]

Se gli articoli contenevano un valore stringa di union select load_file('/var/passwd') un utente malintenzionato di leggere un file arbitrario sul sistema. Questo è payload sta assumendo la vostra utilizzando MySQL. Se gli articoli è stato un elenco di numeri interi, allora questa query non è vulnerabile a SQL injection.

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