Seguridad y estado del SDK PHP
El SDK lee archivos de proyectos no confiables y puede modificarlos cuando se habilita la corrección. Trate un análisis como una operación con privilegios y un destino explícito, almacenamiento controlado y una ruta de revisión para cada hallazgo.
Configuración global del proceso
Scanner almacena su configuración y el informe actual en estado estático. Los métodos de establecimiento fluidos devuelven una nueva instancia de Scanner, pero modifican ese estado compartido del proceso.
$first = new Scanner();
$second = $first->setPathScan('/srv/project-a');
// Both objects observe the same Scanner configuration.
Ejecute un análisis a la vez en cada proceso de PHP. Use un nuevo proceso CLI para trabajos en segundo plano, solicitudes simultáneas o aislamiento de inquilinos. Un trabajador de larga duración debe aplicar la configuración completa antes de cada ejecución y evitar reutilizar el estado de un trabajo anterior.
run() restablece el informe al inicio de un análisis. No restablece la configuración más amplia del escáner. No dependa de la construcción de objetos para restaurar valores predeterminados.
Acciones sobre archivos
El comportamiento predeterminado de las solicitudes difiere entre ejecuciones interactivas y silenciosas. Elija una acción explícitamente en código sin supervisión:
$report = (new Scanner())
->setPathScan('/srv/app')
->setSilentMode()
->setAutoSkip()
->run();
Para cualquier acción que modifique archivos, llame a enableBackups() y establezca setPathBackups() en un directorio con permiso de escritura fuera del destino. Mantenga la cuarentena, la lista de permitidos, la desofuscación, los informes, los registros, los hallazgos duraderos y los puntos de control fuera del proyecto analizado para que el escáner no inspeccione su propia salida.
Antes de habilitar la limpieza automática, la cuarentena o la eliminación:
- Ejecute análisis de solo informe sobre copias representativas de la aplicación.
- Compruebe
coverage,findingsydiagnosticspara cada ejecución. - Pruebe los procedimientos de copia de seguridad y restauración con la misma cuenta que ejecuta los análisis de producción.
- Mantenga la ruta de destino restringida a raíces de proyecto aprobadas.
Rutas y permisos
Pase rutas absolutas desde una configuración de confianza. Normalice y autorice las rutas derivadas de solicitudes antes de llamar a setPathScan(), setPathReport() o cualquier otro método de establecimiento de rutas. El SDK normaliza las rutas con Path::get(), pero la normalización no aplica el límite de autorización de su aplicación.
Ejecute el escáner con el mínimo acceso al sistema de archivos necesario para leer el destino y escribir su salida controlada. No ejecute una solicitud web con una cuenta que pueda analizar o eliminar archivos fuera de la raíz de implementación prevista.
Comportamiento de red y operación sin conexión
El análisis de código principal usa definiciones integradas. La verificación de integridad y las definiciones de dominios de Maltrail pueden usar HTTPS saliente. El escáner almacena los datos remotos correctos en una caché del sistema operativo fuera del destino del análisis.
Cuando su entorno bloquea el tráfico saliente, capture y conserve los diagnósticos del informe. Una actualización fallida puede dejar activas definiciones almacenadas en caché; el informe registra los metadatos disponibles en signature_indexes. No asuma que una matriz diagnostics vacía significa que no existe una ruta de red.
Política de fallos
Trate false de run() como un error operativo. Trate la cobertura incompleta, los diagnósticos y las advertencias como señales de revisión. Almacene el informe con la marca temporal del análisis, la identidad del destino, la versión del escáner obtenida con Scanner::getVersion() y cualquier identificador externo de trabajo.
El SDK muestra los mensajes de error capturados mediante getLastError(). Regístrelos en un registro de aplicación protegido. No exponga rutas de destino, contenido de informes ni texto de error sin procesar a usuarios no confiables.