Red de conocimiento informático - Aprendizaje de programación - ¿Cuál es el mecanismo de seguridad de Java? "La arquitectura del cargador de clases\x0d\\\x0d\"\x0d\"\x0d\"\x0d\"\x0d\"\x0d\"\x0d\"\x0d\"\x0d\ "\x0d\"\x0d\"\x0d\"\x0d\"\x0d\"\x0d\"\x0d\"\x0d\"securitymanager y JavaAPI (securitymanager) son la primera línea de defensa para el entorno limitado de Java. En el entorno limitado de Java, la arquitectura del cargador de clases es la primera línea de defensa. Actúa como un entorno limitado de Java de tres maneras: evita que áreas de código malicioso interfieran con código bien intencionado (x0d\x0d\2gt; protege los límites del código confiable (x0d\\\\x0d\3gt; clasifica código into Dentro de una clase (llamada dominio de protección), esto determina qué tipos de operaciones puede realizar el código (x0d\class file checker:\El verificador de archivos de clase garantiza que el contenido de los archivos de clase cargados tenga la estructura interna correcta y que sea consistente Si un compilador defectuoso o un hacker inteligente genera un archivo de clase que contiene un método, entonces el código de bytes del método calificado contiene una instrucción para saltar fuera del método, lo que provocará que la máquina virtual se bloquee, por lo que para garantizar la solidez. , es muy importante que la máquina virtual verifique la integridad del código de bytes que carga. El verificador de archivos de clase realiza cuatro escaneos separados para completar su operación. \Primero: en este escaneo, para cada secuencia de bytes que se importará como un tipo, el verificador de archivos de clase verifica si se ajusta a la estructura parcial del archivo JavaClass. En este escaneo, el verificador realiza una serie de comprobaciones, tales como: Cada archivo de clase debe comenzar con los mismos cuatro bytes: 0xCAFEBABE. el analizador de archivos de clase puede identificar fácilmente problemas obvios con el archivo y rechazarlo. El inspector también debe verificar si el número de versión y el número de versión menor declarados en el archivo de clase están dentro del rango admitido por la implementación de la máquina virtual. También verifique que el archivo de clase no se haya truncado. En resumen, el propósito del primer escaneo es garantizar que la secuencia de bytes sea correcta. \Escaneo 2: Verificación semántica de datos de tipo. Durante el segundo escaneo, el. El inspector debe examinar cada componente para asegurarse de que sean instancias de su tipo y que estén estructuradas adecuadamente. Además, se verifica si se cumplen las condiciones específicas especificadas por el lenguaje de programación Java. las clases distintas a la clase Objeto deben tener una superclase, o verificar si la clase final ha sido subclasificada, etc.: verificación de código de bytes\x0d\\x0d\ Este viaje es para asegurarse de que cualquier ruta tomada a través del flujo de código de bytes dé como resultado una ruta determinista. operando y para asegurarse de que la pila de operandos siempre contenga el valor correcto y el tipo correcto.\ Durante el enlace dinámico, el verificador de archivos de clase realiza un cuarto escaneo si se resuelve una referencia de símbolo contenida en el archivo de clase. El cuarto escaneo es sólo una parte del proceso de vinculación dinámica. Cuando se carga un archivo de clase, contiene referencias simbólicas a otras clases y sus campos y métodos. Una referencia simbólica es una cadena que proporciona el nombre del elemento al que se hace referencia y puede contener otra información que sea suficiente para identificar de forma única una clase, método o campo.

¿Cuál es el mecanismo de seguridad de Java? "La arquitectura del cargador de clases\x0d\\\x0d\"\x0d\"\x0d\"\x0d\"\x0d\"\x0d\"\x0d\"\x0d\"\x0d\ "\x0d\"\x0d\"\x0d\"\x0d\"\x0d\"\x0d\"\x0d\"\x0d\"securitymanager y JavaAPI (securitymanager) son la primera línea de defensa para el entorno limitado de Java. En el entorno limitado de Java, la arquitectura del cargador de clases es la primera línea de defensa. Actúa como un entorno limitado de Java de tres maneras: evita que áreas de código malicioso interfieran con código bien intencionado (x0d\x0d\2gt; protege los límites del código confiable (x0d\\\\x0d\3gt; clasifica código into Dentro de una clase (llamada dominio de protección), esto determina qué tipos de operaciones puede realizar el código (x0d\class file checker:\El verificador de archivos de clase garantiza que el contenido de los archivos de clase cargados tenga la estructura interna correcta y que sea consistente Si un compilador defectuoso o un hacker inteligente genera un archivo de clase que contiene un método, entonces el código de bytes del método calificado contiene una instrucción para saltar fuera del método, lo que provocará que la máquina virtual se bloquee, por lo que para garantizar la solidez. , es muy importante que la máquina virtual verifique la integridad del código de bytes que carga. El verificador de archivos de clase realiza cuatro escaneos separados para completar su operación. \Primero: en este escaneo, para cada secuencia de bytes que se importará como un tipo, el verificador de archivos de clase verifica si se ajusta a la estructura parcial del archivo JavaClass. En este escaneo, el verificador realiza una serie de comprobaciones, tales como: Cada archivo de clase debe comenzar con los mismos cuatro bytes: 0xCAFEBABE. el analizador de archivos de clase puede identificar fácilmente problemas obvios con el archivo y rechazarlo. El inspector también debe verificar si el número de versión y el número de versión menor declarados en el archivo de clase están dentro del rango admitido por la implementación de la máquina virtual. También verifique que el archivo de clase no se haya truncado. En resumen, el propósito del primer escaneo es garantizar que la secuencia de bytes sea correcta. \Escaneo 2: Verificación semántica de datos de tipo. Durante el segundo escaneo, el. El inspector debe examinar cada componente para asegurarse de que sean instancias de su tipo y que estén estructuradas adecuadamente. Además, se verifica si se cumplen las condiciones específicas especificadas por el lenguaje de programación Java. las clases distintas a la clase Objeto deben tener una superclase, o verificar si la clase final ha sido subclasificada, etc.: verificación de código de bytes\x0d\\x0d\ Este viaje es para asegurarse de que cualquier ruta tomada a través del flujo de código de bytes dé como resultado una ruta determinista. operando y para asegurarse de que la pila de operandos siempre contenga el valor correcto y el tipo correcto.\ Durante el enlace dinámico, el verificador de archivos de clase realiza un cuarto escaneo si se resuelve una referencia de símbolo contenida en el archivo de clase. El cuarto escaneo es sólo una parte del proceso de vinculación dinámica. Cuando se carga un archivo de clase, contiene referencias simbólicas a otras clases y sus campos y métodos. Una referencia simbólica es una cadena que proporciona el nombre del elemento al que se hace referencia y puede contener otra información que sea suficiente para identificar de forma única una clase, método o campo.

Por lo tanto, las referencias simbólicas a otras clases deben dar el nombre completo de la clase; las referencias simbólicas a campos de otras clases deben dar el nombre de la clase, el nombre del campo y el descriptor de campo; las referencias a los métodos de otras clases deben dar el nombre de la clase y el nombre del método; y descriptor del método. \ El llamado enlace dinámico es el proceso de analizar referencias de símbolos en referencias directas. \Además, dado que los programas Java están vinculados dinámicamente, el verificador de archivos de clases debe verificar la compatibilidad entre las clases que hacen referencia entre sí al realizar el cuarto escaneo. \Además, la máquina virtual Java tiene muchas características de seguridad integradas:\Conversiones de referencia de tipo seguro (Acceso a memoria estructurada (Recolección automática de basura (no es necesario liberar explícitamente la memoria asignada))) (Comprobación de referencia vacía nula. \\ El La máquina virtual Java hace que los programas Java sean más robustos al garantizar que solo puedan acceder a la memoria mediante métodos estructurados con seguridad de tipos.