Invio di ritorno da ClassUtil.newInstance

1

Ho iniziato a entrare nella sicurezza di Java e avevo una domanda a cui non riuscivo a trovare una risposta.

Diciamo che abbiamo un'applicazione web che usa il seguente codice e che l'UserControlledString può essere impostato per essere la classe che vogliamo:

SomeClass someClassObj = (SomeClass) ClassUtil.newInstance(UserControlledString);

Sarebbe possibile sfruttarlo e causare danni? Da quello che posso dire molto probabilmente non ma ho pensato di chiedere.

    
posta learn2live 23.02.2017 - 00:09
fonte

3 risposte

0

Non so cosa sia ClassUtil , ma per Class.newInstance :

  • Alcune classi si auto-registrano dal loro costruttore. Un'idea terribile, ma ci vai. L'istanza quindi persisterà anche se lo fosse non un'istanza di SomeClass .

  • Forse c'è davvero un sottotipo di SomeClass appeso che è inadeguato.

  • Il ClassLoader può eseguire una rete o un file relativamente costoso accesso, e può accumulare memoria che non andrà via fino a quando il processo è riavviato.

  • Apre la superficie di attacco tramite% di scrittura scadente con% di parole. Pensa a tutti i personaggi divertenti che potresti inserire nella stringa.

risposta data 23.02.2017 - 12:33
fonte
0

Dipende da cosa è una classe e cosa stai facendo con essa. In uno di sé, non c'è nulla di intrinsecamente insicuro a riguardo.

    
risposta data 23.02.2017 - 04:40
fonte
0

È possibile causare danni se SomeClass è una classe genitore e UserControlledString è la classe figlio

Prendi la classe genitore Discount come esempio. Esistono classi secondarie MixAndMatchDiscount e QuantityDiscount .

Discount discountObj = (Discount) ClassUtil.newInstance(UserControlledDiscountString);

Gli utenti possono modificare lo sconto previsto con un altro sconto per ottenere un prezzo migliore nel caso in cui conoscano il nome della tua classe.

    
risposta data 23.02.2017 - 05:04
fonte

Leggi altre domande sui tag