web-dev-qa-db-fra.com

Évitez le code malveillant tout en chargement de manière dynamique des classes avec classier

Fond

L'un des avantages des composants découplés dans les systèmes est que vous pouvez étendre le système sans avoir à toucher le code existant.

Parfois, vous n'avez même pas besoin de recompiler l'ancien code car vous pouvez charger de manière dynamique des cours de disque comme celui-ci:

clazz = Demo.class.getClassLoader().loadClass("full.package.name.to.SomeClass");

Qui permet une sorte d'architecture plug-in de Tries (donner ou prendre).

Question

Comment empêchez-vous le code malveillant de fonctionner lors du chargement dynamique d'une classe à partir de disque à l'aide de ClassLoader?

2
Tulains Córdova

Cette question est une duplication de celle-ci sur le débordement de la pile.

Cela étant dit, "architecture de plug-in" ne ressemble pas à quelque chose où vous pouvez défendre de manière significative contre le code malveillant, car il aura besoin d'interagir étroitement avec le reste du système. C'est un jeu que vous ne pouvez pas gagner, alors ne le joue pas. Acceptez simplement que les plugins puissent faire ce qu'ils veulent dans votre système, seuls les plugins de confiance doivent donc être installés.

5
Michael Borgwardt