> If you declare state members as private, the bytecode gets hacked around > during compilation to enable package level access so that the inner > class can access the private members it is referencing. If you use > reflection you can access methods and members that you figured where > private at design time.
Is that all? A friend of mine hacks the JVM all the time. Maybe I've just gotten jaded, but the JVM just isn't secure enough that way to worry about it. For example: victim.java: public class victim { public String mc = "Can't touch this."; } attacker.java: public class attacker { static public void main(String[] args) { System.out.println((new victim()).mc); } } Compile both. Change victim so that mc is private. Recompile victim only. Run attacker. And this doesn't even include all of the fun I can have with dynamically generated bytecodes. :-) If you want to even try to have security in Java, you have to really use the security manager, which would allow you to supress reflection, and you have a raft of other restrictions. See the http://java.sun.com/blueprints/qanda/ejb_tier/restrictions.html for more that you may want to know (but then again, since it refers to EJB Containers, perhaps you do :-)). --- Noel --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]