• Cursor – Foco en la seguridad de datos críticos

    [Contenido en desarrollo]

    Objetivo: proteger datos sensibles del código fuente como API keys, usuarios y contraseñas al interactuar en herramientas de generación de código asistido por IA como el IDE Cursor.

    1. Configuración del IDE:
      • Cursor Settings
        • General
          • Privacy mode
            • Enabled: Cursor no almacenará código en sus servidores. Si se desactiva, usarán los prompts y telemetría para mejorar Cursor. Esta configuración es por dispositivo (no a nivel de cuenta). Debes revisarla en cada dispositivo que utilices para desarrollar con Cursor.
    2. Archivos de exclusión:
      • Documentación de referencia: https://docs.cursor.com/context/ignore-files
      • Nivel de proyecto:
        • Archivo .cursorignore (lista de patrones de exclusión)
          • bloquea el indexado de código de los archivos definidos
          • bloquea código accesible mediante Tab, Chat y Cmd+K
          • bloquea código accesible mediante referencias con símbolo @
        • Archivos .cursorindexingignore
          • excluye los archivos definidos del índice de Cursor (aunque siguen pudiendo ser accedidos por las funcionalidades asistidas por IA de Cursor, incluyendo cuando Cursor busca en el código y lo expone a los LLMs)
        • Archivo .gitignore
          • Cursor ignorará los archivos listados en el .gitignore de la raiz del proyecto
        • Archivos ignorados de forma predeterminada:
      • Nivel de usuario (para todos los proyectos)
        • VS Code Settings
          • Cursor
            • Global Cursor Ignore List
              • Los patrones de esta lista tienen el mismo efecto que añadirlos a mano a un archivo .cursorignore en cada workspace
    3. Archivos especialmente vulnerables
      • cualquier archivo que contenga datos de autenticación:
        • archivos de variables de entorno
        • clases o librerías con valores de autenticación hardcoded
        • seeders o archivos con datos iniciales en las bases de datos que hagan referencia a claves de usuario
    4. Trabajo en equipos
      • Considerando que las configuraciones del IDE de cada desarrrollador pueden ser diferentes, reforzará la seguridad el hecho de unificar los archivos .cursorignore y .cursorindexingignore incluso cuando sus reglas estén incluídas por defecto en el Global Cursor Ignore List a nivel de usuario del IDE
    5. Puntos críticos conocidos (mayo 2025)
      • Las llamadas a los servicios «Terminal» y «Servidor MCP» iniciadas desde el Chat no son capaces de bloquear el acceso a las exclusiones definidas en .cursorignore
  • Phpstorm: inotify limit too low

    El IDE de php Phpstorm realiza una serie de tareas en segundo plano para mantener sincronizados los archivos del proyecto abierto con el disco duro (detectar cambios externos, indexar código, etc.). Es en este contexto que le programa puede mostrar la notificación siguiente:

    «External file changes sync may be slow: The current inotify(7) watch limit is too low.»

    Para corregir esta limitación recomiendo aplicar la solución que propone IntelliJ en su Confluence:

    1. Crear un fichero (necesario permisos root) en la ruta «/etc/sysctl.d/» que termine en «.conf». En mi caso usaré el editor «vi»:
      sudo vi /etc/sysctl.d/90-phpstorm.conf
    2. Añadir una sola linea y guardar:
      fs.inotify.max_user_watches = 524288
    3. Aplicar cambios en el sistema reiniciando o mediante el comando siguiente:
      sudo sysctl -p --system
    4. Reiniciar Phpstorm si estaba abierto.

  • Vagrant: carpetas sincronizadas en host Windows y guest Ubuntu

    En el desarrollo web de casi cualquier proyecto te acabas encontrando con la necesidad de tener un entorno de pruebas lo más parecido al que será el real de producción. Las ventajas son muchas y si estás leyendo esto seguramente ya las conoces :).

    Vagrant sobre VirtualBox es una opción muy recomendable si queremos disponer de un sistema completo pero con la flexibilidad de una máquina virtual. En el ejemplo que os propongo vamos a partir de un Vagrantfile preconfigurado con varios componentes muy útiles para no tener que empezar desde cero: Vaprobash. (más…)