¿Cuáles son las implicaciones de seguridad de la utilización de los tipos de primas en Java?

StackOverflow https://stackoverflow.com/questions/3503324

Pregunta

Actualmente estoy revisando las implicaciones de seguridad de varias advertencias en una aplicación Java EE grande. Dado que la mayor parte del código es de varios años, contiene muchos usos de los tipos de colección prima:

List items = new List();

en lugar de los tipos de colección parametrizada:

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

La única implicación de seguridad que se me ocurre es que los tipos de primas no pueden ser estáticamente Tipo-comprueban en la compilación y potencialmente podría resultar en un tiempo de ejecución de errores como ClassCastException que, dependiendo de donde esto ocurre en el código, podría dar lugar a una denegación de servicio.

¿Hay otras implicaciones del uso de los tipos de primas que no estoy pensando?

¿Fue útil?

Solución

No se puede pensar en otras implicaciones de seguridad.

Para implicaciones no son de seguridad, tipos genéricos también hacer conversiones explícitas * en el código de bytes para los tipos que devuelven un genérico. Por supuesto, esto es transparente para el usuario, y parece que el tipo devuelto es el tipo genérico.

Por ejemplo:

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

* Esto sucede debido a tipo borrado .

Otros consejos

La falta de seguridad de tipos puede conducir a problemas de seguridad. Por ejemplo digamos que esta lista se utiliza para crear una consulta:

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

Si los artículos contenían un valor de cadena de union select load_file('/var/passwd') un atacante podría leer un archivo arbitrario en el sistema. Esta es la carga útil está asumiendo el uso de MySQL. Si los artículos fue una lista de números enteros, a continuación, esta consulta no es vulnerable a la inyección SQL.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top