You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

Unsafe_Reflection.java 1.5 kB

3 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package Unsafe_Reflection;
  2. import java.util.logging.Logger;
  3. public class Unsafe_Reflection
  4. {
  5. static final Logger log = Logger.getLogger("local-logger");
  6. public void bad()
  7. {
  8. String data = System.getProperty("ADD");
  9. if(data != null){
  10. Class<?> c = null;
  11. try {
  12. c = Class.forName(data); // bad 不安全的反射
  13. } catch (ClassNotFoundException e) {
  14. log.info("error");
  15. } /* FLAW: loading arbitrary class */
  16. Object instance = null;
  17. try {
  18. if(c != null){
  19. instance = c.newInstance();
  20. log.info(instance.toString());
  21. }
  22. } catch (InstantiationException e) {
  23. log.info("error");
  24. } catch (IllegalAccessException e) {
  25. log.info("error");
  26. }
  27. }
  28. }
  29. public void good()
  30. {
  31. String data = System.getProperty("ADD");
  32. if (data!=null && !data.equals("Testing.test") && /* FIX: classname must be one of 2 values */
  33. !data.equals("Test.test"))
  34. {
  35. return;
  36. }
  37. Class<?> c = null;
  38. try {
  39. c = Class.forName(data); // good 不安全的反射
  40. } catch (ClassNotFoundException e) {
  41. log.info("error");
  42. }
  43. Object instance = null;
  44. try {
  45. if(c != null){
  46. instance = c.newInstance();
  47. log.info(instance.toString());
  48. }
  49. } catch (InstantiationException e) {
  50. log.info("error");
  51. } catch (IllegalAccessException e) {
  52. log.info("error");
  53. }
  54. }
  55. }

No Description

Contributors (1)