La encapsulación consiste en crear límites fuertes. En un explorador web esto puede suponer la seguridad de que tu codificación móvil no se vea comprometido por otro código móvil. En el servidor puede significar la diferenciación entre los datos validados y los que no lo están, entre los datos de un usuario y los de otro, o entre los diferentes usuarios, los datos que pueden ver y los que no.
private
desde un método de acceso public
. private
desde un método de acceso public
permite que el código de llamada modifique el contenido de la matriz, dando a la matriz acceso public
y contradiciendo las intenciones del programador que la hizo private
. private
desde un método de acceso public
.
public final class urlTool extends Applet {
private URL[] urls;
public URL[] getURLs() {
return urls;
}
...
}
public class CustomerServiceApplet extends JApplet
{
public void paint(Graphics g)
{
...
conn = DriverManager.getConnection ("jdbc:mysql://db.example.com/customerDB", "csr", "p4ssw0rd");
...
package
a la clase externa original. Es más, como una clase interna puede acceder a campos private
en su clase envolvente, una vez que una clase interna se convierte en otra del mismo nivel en código de bytes, el compilador convierte los campos private
a los que accede la clase interna en campos protected
.
public final class urlTool extends Applet {
private final class urlHelper {
...
}
...
}
finalize()
como public
.super.finalize()
dentro de una implementación de finalize()
. En situaciones de código móvil, la práctica errónea de recolección manual de elementos no utilizados puede convertirse en una amenaza para la seguridad si un atacante es capaz de invocar de forma malintencionada uno de sus métodos finalize()
porque se ha declarado con acceso public
. Si está utilizando finalize()
tal cual se diseñó, no hay motivos para declarar finalize()
con otro acceso que no sea protected
.public finalize()
.
public final class urlTool extends Applet {
public void finalize() {
...
}
...
}
public
, final
y static
.public
, final
y static
es un error. Como las matrices son objetos mutables, la restricción final
requiere que el propio objeto de matriz se asigne una sola vez, pero no garantiza los valores de los elementos de matriz. Como la matriz es pública, un programa malintencionado podría cambiar los valores almacenados en ella. En la mayoría de los casos, la matriz debe hacerse private
. public
, final
y static
.
public final class urlTool extends Applet {
public final static URL[] urls;
...
}
public
pero no final
. public
de un Applet y las clases usadas por un Applet se deben declarar final
para impedir que un atacante manipule u obtenga acceso no autorizado al estado interno del Applet.public
pero no final
.
public final class urlTool extends Applet {
public URL url;
...
}