PolicyChecks

Los proyectos que siguen las mejores prácticas a continuación pueden autocertificarse voluntariamente y demostrar que han obtenido una insignia de mejores prácticas de Open Source Security Foundation (OpenSSF).

No existe un conjunto de prácticas que pueda garantizar que el software nunca tendrá defectos o vulnerabilidades; incluso los métodos formales pueden fallar si las especificaciones o suposiciones son incorrectas. Tampoco existe ningún conjunto de prácticas que pueda garantizar que un proyecto mantenga una comunidad de desarrollo saludable y que funcione bien. Sin embargo, seguir las mejores prácticas puede ayudar a mejorar los resultados de los proyectos. Por ejemplo, algunas prácticas permiten la revisión por parte de múltiples personas antes del lanzamiento, lo que puede ayudar a encontrar vulnerabilidades técnicas que de otro modo serían difíciles de encontrar y ayudar a generar confianza y un deseo repetido de interacción entre desarrolladores de diferentes compañías. Para obtener una insignia, se deben cumplir todos los criterios DEBE y NO DEBE, se deben cumplir, así como todos los criterios DEBERÍAN deben cumplirse o ser justificados, y todos los criterios SUGERIDOS se pueden cumplir o incumplir (queremos que se consideren al menos). Si desea añadir texto como justificación mediante un comentario genérico, en lugar de ser un razonamiento de que la situación es aceptable, comience el bloque de texto con '//' seguido de un espacio. Los comentarios son bienvenidos a través del sitio de GitHub mediante "issues" o "pull requests". También hay una lista de correo electrónico para el tema principal.

Con mucho gusto proporcionaríamos la información en varios idiomas, sin embargo, si hay algún conflicto o inconsistencia entre las traducciones, la versión en inglés es la versión autorizada.
Si este es su proyecto, por favor muestre el estado de su insignia base en la página de su proyecto. El estado de la insignia base se ve así: El nivel de insignia base para el proyecto 14356 es baseline-1 Aquí se explica cómo insertar la insignia base:
Puede mostrar el estado de su insignia base insertando esto en su archivo markdown:
[![OpenSSF Baseline](https://www.bestpractices.dev/projects/14356/baseline)](https://www.bestpractices.dev/projects/14356)
o insertando esto en su HTML:
<a href="https://www.bestpractices.dev/projects/14356"><img src="https://www.bestpractices.dev/projects/14356/baseline"></a>


Estos son los criterios de Nivel Base 1. Estos son los criterios de la versión v2026.08.28.

Baseline Series: Nivel Base 1 Nivel Base 2 Nivel Base 3

        

 Fundamentos

  • General

    Tenga en cuenta que otros proyectos pueden usar el mismo nombre.

    A badge service backed by a GitHub app that requests repository Administration: Read permissions, and so is able to report on a repository's settings, providing a convenient way for maintainers to demonstrate publicly that best practices are enforced as policies at the repo configuration level

    Por favor use formato de expresión de licencia SPDX; los ejemplos incluyen "Apache-2.0", "BSD-2-Clause", "BSD-3-Clause", "GPL-2.0+", "LGPL-3.0+", "MIT" y "(BSD-2-Clause OR Ruby)". No incluya comillas simples o comillas dobles.
    Si hay más de un lenguaje, enumérelos como valores separados por comas (los espacios son opcionales) y ordénelos de más a menos usado. Si hay una lista larga, por favor enumere al menos los tres primeros más comunes. Si no hay lenguaje (por ejemplo, este es un proyecto solo de documentación o solo de pruebas), use el carácter único "-". Por favor use una capitalización convencional para cada lenguaje, por ejemplo, "JavaScript".
    La Common Platform Enumeration (CPE) es un esquema de nomenclatura estructurado para sistemas de tecnología de la información, software y paquetes. Se utiliza en varios sistemas y bases de datos al reportar vulnerabilidades.

 Controles 24/24 ●

  • Controles


    Cuando un usuario intenta leer o modificar un recurso sensible en el repositorio autorizado del proyecto, el sistema DEBE requerir que el usuario complete un proceso de autenticación multifactor. [OSPS-AC-01.01]
    Aplique la autenticación multifactor para el sistema de control de versiones del proyecto, requiriendo que los colaboradores proporcionen una segunda forma de autenticación al acceder a datos sensibles o modificar la configuración del repositorio. Las claves de acceso (passkeys) son aceptables para este control.

    The reponomics organization requires two-factor authentication for all members (GET /orgs/reponomics returns two_factor_requirement_enabled: true). The authoritative repository github.com/reponomics/PolicyChecks is owned by that organization, so every account able to read or modify sensitive resources must complete multi-factor authentication. The requirement covers outside collaborators as well as members.



    Cuando se agrega un nuevo colaborador, el sistema de control de versiones DEBE requerir asignación manual de permisos, o restringir los permisos del colaborador a los privilegios más bajos disponibles por defecto. [OSPS-AC-02.01]
    La mayoría de los sistemas de control de versiones públicos están configurados de esta manera. Asegúrese de que el sistema de control de versiones del proyecto siempre asigne los permisos más bajos disponibles a los colaboradores por defecto cuando se agreguen, otorgando permisos adicionales solo cuando sea necesario.

    A role must be assigned explicitly when a collaborator is added to the repository. Organization membership confers no elevated permission: the organization's base repository permission is read (GET /orgs/reponomics returns default_repository_permission: "read"), and because this repository is public, that base permission confers exactly the access an anonymous user already has. Every collaborator with write access holds an explicit grant.



    Cuando se intenta un commit directo en la rama principal del proyecto, un mecanismo de aplicación DEBE evitar que se aplique el cambio. [OSPS-AC-03.01]
    Si el VCS está centralizado, establezca protección de rama en la rama principal en el VCS del proyecto. Alternativamente, use un enfoque descentralizado, como el del kernel de Linux, donde los cambios se proponen primero en otro repositorio, y fusionar cambios en el repositorio principal requiere un acto separado específico.

    The "protect-main" ruleset applies to the default branch with enforcement active and includes a pull_request rule, so commits cannot be applied directly to main and must arrive through a pull request. The ruleset defines no bypass actors, so no one can circumvent it, including repository admins and organization owners. It additionally enforces linear history, blocks non-fast-forward updates, and requires signed commits.



    Cuando se intenta eliminar la rama principal del proyecto, el sistema de control de versiones DEBE tratar esto como una actividad sensible y requerir confirmación explícita de la intención. [OSPS-AC-03.02]
    Establezca protección de rama en la rama principal en el sistema de control de versiones del proyecto para evitar la eliminación.

    The "protect-main" ruleset includes a deletion rule applying to the default branch, so deleting main is blocked outright rather than merely confirmed. No actor can bypass the ruleset, including repository admins and organization owners.



    Cuando un pipeline de CI/CD opera con metadatos no confiables, esos parámetros DEBEN sanearse y validarse antes de usarse en el pipeline. [OSPS-BR-01.01]
    Los flujos de CI/CD deben sanear (entre comillas, escapar o salir en valores esperados) todas las entradas de metadatos que correspondan a fuentes no confiables. Esto incluye datos como nombres de ramas, mensajes de confirmación, etiquetas, títulos de solicitudes de incorporación e información del autor.

    No untrusted metadata reaches a shell in the project's GitHub Actions workflows. Branch names, commit messages, tags, pull-request titles, and author information are never interpolated into a run: block. Where a workflow needs the branch name, it reads the ${GITHUB_REF_NAME} environment variable inside double quotes rather than a ${{ }} expansion. The only ${{ }} expansions appearing inside run: blocks are github.server_url and github.repository, both GitHub-controlled values. The workflow that validates pull-request titles passes the title to a SHA-pinned action through the GitHub API and never into a shell. The Cloudflare Workers Builds deployment pipeline runs fixed literal commands with no metadata interpolation.



    Cuando un flujo de CI/CD opera sobre instantáneas de código no confiable, DEBE impedir el acceso a credenciales y activos privilegiados de CI/CD. [OSPS-BR-01.03]
    Los flujos de CI/CD deben aislar las instantáneas de código no confiable de las credenciales y activos privilegiados. En particular, los proyectos deben tener cuidado de garantizar que los flujos de trabajo que compilan o ejecutan código antes de su revisión por un colaborador no tengan acceso a las credenciales de CI/CD.

    Neither of the project's two CI/CD pipelines exposes privileged credentials to unreviewed code. The only workflow triggered by pull_request_target, .github/workflows/semantic-pr.yml, checks out no pull-request code, runs no project code, and is limited to permissions: pull-requests: read. The only workflow holding privileged credentials, release-please.yml, is triggered exclusively by push to main and workflow_dispatch, so it never operates on an unreviewed code snapshot. ci.yml does execute pull-request code but references no secrets, and because the repository is public, fork pull-request tokens are downgraded to read-only and are given no secrets. The repository's default workflow token permission is read, and all actions are pinned to full-length commit SHAs. Production deployment runs through Cloudflare Workers Builds, documented in docs/operations.md; fork pull requests build there only after explicit admin approval, so untrusted code is reviewed by a collaborator before it can run with access to deploy credentials.



    Cuando el proyecto lista un URI como un canal oficial del proyecto, ese URI DEBE ser entregado exclusivamente usando canales cifrados. [OSPS-BR-03.01]
    Configure los sitios web y sistemas de control de versiones del proyecto para usar canales cifrados como SSH o HTTPS para la transmisión de datos. Asegúrese de que todas las herramientas y dominios referenciados en la documentación del proyecto solo puedan accederse a través de canales cifrados.

    The project's official channels are the source repository at https://github.com/reponomics/PolicyChecks and the badge service at https://policychecks.reponomics.org, and both are reachable only over encrypted channels. A plain-HTTP request to the service returns 301 to the https:// origin, and responses carry strict-transport-security: max-age=86400. Badge endpoints return HTTP/2 200 over TLS with a valid certificate chain; the service root returns 404 by design, as the service exposes no landing page.



    Cuando el proyecto indique una URI como canal de distribución oficial, ese canal DEBE estar protegido contra ataques de adversario en el medio (adversary-in-the-middle) mediante canales criptográficamente autenticados. [OSPS-BR-03.02]
    Los artefactos distribuidos por el proyecto deben distribuirse a través de canales que garanticen la integridad y la autenticidad. El uso de HTTPS para las descargas, versiones firmadas o distribución a través de gestores de paquetes confiables son métodos aceptables para proteger contra ataques de adversario en el medio.

    The project distributes through GitHub Releases (https://github.com/reponomics/PolicyChecks/releases), served exclusively over HTTPS, and through the hosted service, which is TLS-only with HTTP redirecting to HTTPS and HSTS set. The package is marked private: true in package.json and is not published to any registry. Every release tag commit carries a valid signature (verification.verified: true), and immutable releases are enabled (GET /repos/reponomics/PolicyChecks/immutable-releases returns enabled: true), so published release assets and tags cannot be altered after publication.



    El proyecto DEBE prevenir el almacenamiento no intencionado de datos sensibles no cifrados, como secretos y credenciales, en el sistema de control de versiones. [OSPS-BR-07.01]
    Configure .gitignore o equivalente para excluir archivos que puedan contener información sensible. Use hooks de pre-commit y herramientas de escaneo automatizado para detectar y prevenir la inclusión de datos sensibles en los commits.

    .gitignore excludes .env, .env.* (with an explicit !.env.example exception), and *.private-key.pem. .env.example contains blank placeholders and non-secret local defaults only. Secret scanning, push protection, non-provider pattern scanning, and validity checks are all enabled on the repository, so a secret is blocked at push time rather than merely detected afterward. Runtime secrets are held in the deployed Worker's settings rather than in build variables, and docs/operations.md documents credential storage.



    Cuando el proyecto haya realizado un lanzamiento, la documentación del proyecto DEBE incluir guías de usuario para toda la funcionalidad básica. [OSPS-DO-01.01]
    Cree guías de usuario o documentación para toda la funcionalidad básica del proyecto, explicando cómo instalar, configurar y usar las características del proyecto. Si hay acciones peligrosas o destructivas disponibles, incluya advertencias altamente visibles.

    The README documents what the service does, how it works, and how to use it (badge table, endpoint reference, examples); additional docs live in https://github.com/reponomics/PolicyChecks/tree/main/docs [documentation_basics]



    Cuando el proyecto haya realizado un lanzamiento, la documentación del proyecto DEBE incluir una guía para reportar defectos. [OSPS-DO-02.01]
    Se recomienda que los proyectos utilicen el gestor de incidencias predeterminado de su VCS. Si se utiliza una fuente externa, asegúrese de que la documentación del proyecto y la guía de contribución expliquen claramente y de manera visible cómo usar el sistema de reporte. Se recomienda que la documentación del proyecto también establezca expectativas sobre cómo se clasificarán y resolverán los defectos.

    The project has made releases, so this control applies. SUPPORT.md contains a "Service Issues" section directing defect reports to the GitHub issue tracker and enumerating what belongs there, states that public issues are preferred and why, routes repository-specific questions to support@reponomics.org, and directs security reports to SECURITY.md instead. CONTRIBUTING.md independently states that issues may be opened to report a bug. GitHub Issues is enabled (has_issues: true).



    El proyecto DEBE contar con uno o más mecanismos para realizar discusiones públicas sobre los cambios propuestos y los obstáculos de uso. [OSPS-GV-02.01]
    Establezca uno o más mecanismos para discusiones públicas dentro del proyecto, como listas de correo, mensajería instantánea o gestores de incidencias, para facilitar la comunicación abierta y la retroalimentación.

    Both GitHub Issues and GitHub Discussions are enabled on the repository (GET /repos/reponomics/PolicyChecks returns has_issues: true and has_discussions: true). CONTRIBUTING.md directs contributors to open an issue to request a feature or report a bug, and to start a Discussion thread to engage other users on a topic; it further asks that proposed feature changes be raised in an issue first so they can be discussed publicly before implementation.



    La documentación del proyecto DEBE incluir una explicación del proceso de contribución, o indicar claramente que no se aceptan contribuciones públicas [OSPS-GV-03.01]
    Cree un archivo CONTRIBUTING.md o un directorio CONTRIBUTING/ para delinear el proceso de contribución, incluyendo los pasos para enviar cambios e interactuar con los mantenedores del proyecto.

    CONTRIBUTING.md at the repository root explains the contribution process: how to raise an issue or Discussion, the expectation that feature proposals are discussed before a PR, the types of contributions accepted (including project-specific criteria for proposing new badges), repository policies governing submissions (signed commits, PR-only changes to main, conventional-commit PR titles, running npm run check, resolving failing checks, including tests), and local development setup. https://github.com/reponomics/PolicyChecks/blob/main/CONTRIBUTING.md



    La licencia del código fuente DEBE cumplir con la Definición de Código Abierto de la OSI o la Definición de Software Libre de la FSF. [OSPS-LE-02.01]
    Agregue un archivo LICENSE al repositorio del proyecto con una licencia que sea una licencia aprobada por la Open Source Initiative (OSI), o una licencia libre aprobada por la Free Software Foundation (FSF). Ejemplos de tales licencias incluyen MIT, BSD 2-clause, BSD 3-clause revised, Apache 2.0, Lesser GNU General Public License (LGPL), y la GNU General Public License (GPL). Liberar al dominio público cumple con este control si no hay otros gravámenes como patentes.

    The source code is licensed under the MIT license, which is OSI-approved and FSF free. Confirmed by the LICENSE file at the repository root, the "license": "MIT" field in package.json, and GitHub's own license detection (GET /repos/reponomics/PolicyChecks returns license.spdx_id: MIT).



    La licencia de los activos de software publicados DEBE cumplir con la Definición de Código Abierto de la OSI o la Definición de Software Libre de la FSF. [OSPS-LE-02.02]
    Si se incluye una licencia diferente con los activos de software lanzados, asegúrese de que sea una licencia aprobada por la Open Source Initiative (OSI), o una licencia libre aprobada por la Free Software Foundation (FSF). Ejemplos de tales licencias incluyen MIT, BSD 2-clause, BSD 3-clause revised, Apache 2.0, Lesser GNU General Public License (LGPL), y la GNU General Public License (GPL). Tenga en cuenta que la licencia para los activos de software lanzados puede ser diferente a la del código fuente.

    The released software assets carry no separate license. The releases publish no separate assets, so the only released artifacts are the source archives generated for each tag, governed by the same MIT license as the source code. Those archives contain LICENSE at their root. MIT is OSI-approved and FSF free.



    La licencia del código fuente DEBE mantenerse en el archivo LICENSE, el archivo COPYING, el directorio LICENSES/ o el directorio LICENSE/ del repositorio correspondiente. [OSPS-LE-03.01]
    Incluya la licencia del código fuente del proyecto en el archivo LICENSE, el archivo COPYING, el directorio LICENSES/ o el directorio LICENSE/ del proyecto para proporcionar visibilidad y claridad sobre los términos de la licencia. El nombre del archivo PUEDE tener una extensión. Si el proyecto tiene varios repositorios, asegúrese de que cada repositorio incluya el archivo de licencia.

    The MIT license text is maintained in the LICENSE file at the root of the repository: https://github.com/reponomics/PolicyChecks/blob/main/LICENSE. The project has a single repository, so there is no additional repository requiring its own license file.



    La licencia de los activos de software publicados DEBE incluirse en el código fuente publicado, o en un archivo LICENSE, un archivo COPYING o un directorio LICENSE/ junto a los activos de la versión correspondiente. [OSPS-LE-03.02]
    Incluya la licencia de los activos de software lanzados del proyecto en el código fuente lanzado, o en un archivo LICENSE, archivo COPYING o directorio LICENSE/ junto con los activos de lanzamiento correspondientes para proporcionar visibilidad y claridad sobre los términos de licencia. El nombre de archivo PUEDE tener una extensión. Si el proyecto tiene múltiples repositorios, asegúrese de que cada repositorio incluya el archivo de licencia.

    The releases publish no separate assets, so the released software assets are the source archives generated for each tag. Those archives include the MIT license at the archive root; nothing in the repository's export configuration removes it.



    El repositorio de código fuente del proyecto DEBE ser legible públicamente en una URL estática. [OSPS-QA-01.01]
    Use un VCS común como GitHub, GitLab o Bitbucket. Asegúrese de que el repositorio sea legible públicamente. Evite la duplicación o creación de mirrors de repositorios a menos que la documentación altamente visible aclare la fuente principal. Evite cambios frecuentes en el repositorio que impactarían la URL del repositorio. Asegúrese de que el repositorio sea público.

    The source repository is publicly readable at the static URL https://github.com/reponomics/PolicyChecks. GET /repos/reponomics/PolicyChecks returns private: false, visibility: "public", archived: false. It is hosted on GitHub.



    El sistema de control de versiones DEBE contener un registro legible públicamente de todos los cambios realizados, quién los realizó y cuándo se realizaron los cambios. [OSPS-QA-01.02]
    Use un VCS común como GitHub, GitLab o Bitbucket para mantener un historial de commits legible públicamente. Evite aplastar o reescribir commits de una manera que oscurecería al autor de cualquier commit.

    The full git history is publicly readable and records the author name, email, and date of every commit. History rewriting on the primary branch is blocked: the "protect-main" ruleset enforces required_linear_history, non_fast_forward, and required_signatures with no bypass actors, so force-pushes and rewrites to main are rejected. Because linear history is required, merges are limited to squash and rebase. Squash merging collapses a branch's individual commits, but authorship is preserved through it, and the history on main attributes work to both maintainers and external contributors.



    Cuando el sistema de gestión de paquetes lo admita, el repositorio de código fuente DEBE contener una lista de dependencias que contabilice las dependencias directas del lenguaje. [OSPS-QA-02.01]
    Esto puede tomar la forma de un gestor de paquetes o un archivo de dependencias del lenguaje que enumere todas las dependencias directas como package.json, Gemfile o go.mod.

    npm supports dependency manifests, and the repository contains package.json enumerating all direct language dependencies, alongside package-lock.json pinning the fully resolved transitive tree. CONTRIBUTING.md directs contributors to install from the lockfile with npm ci and to use npm install only when intentionally updating dependencies and committing the resulting lockfile change.



    Los proyectos con múltiples repositorios DEBEN documentar una lista de bases de código que forman parte del proyecto. [OSPS-QA-04.01]
    Documente cualquier repositorio de código de subproyecto adicional producido por el proyecto y compilado en un lanzamiento. Esta documentación debe incluir el estado e intención de la respectiva base de código.

    PolicyChecks is a single codebase in a single repository - the Cloudflare worker entry point lives in-repo at cloudflare/policychecks-worker.ts. No subproject repository is produced or compiled into a release, so there is no list of constituent codebases to document.



    El sistema de control de versiones NO DEBE contener artefactos ejecutables generados. [OSPS-QA-05.01]
    Elimine los artefactos ejecutables generados en el sistema de control de versiones del proyecto. Se recomienda que cualquier escenario donde un artefacto ejecutable generado parezca crítico para un proceso como las pruebas, en su lugar debería generarse en el momento de la compilación o almacenarse por separado y obtenerse durante un paso de pipeline específico y bien documentado.

    No generated executable artifact is tracked; file --mime over every tracked file returns no executables. Build and coverage outputs are excluded from version control: .gitignore covers dist/, build/, out/, coverage/, and node_modules/, and none of those paths is tracked. Exactly one tracked file carries the executable bit, .husky/pre-commit, a short hand-written shell hook rather than a generated artifact. The worker is generated at build time by npm run build (tsconfig.build.json).



    El sistema de control de versiones NO DEBE contener artefactos binarios que no se puedan revisar. [OSPS-QA-05.02]
    No agregue ningún artefacto binario no revisable al sistema de control de versiones del proyecto. Esto incluye binarios de aplicaciones ejecutables, archivos de biblioteca y artefactos similares. No incluye activos como imágenes gráficas, archivos de sonido o música y contenido similar que típicamente se almacena en formato binario.

    The only binary files tracked are PNG images under docs/assets/ - project banners and documentation screenshots. Graphical images are outside this control's scope. No executable application binaries, library files, or comparable unreviewable artifacts are tracked.



    La documentación del proyecto DEBE contener los contactos de seguridad. [OSPS-VM-02.01]
    Cree un archivo security.md (o con nombre similar) que contenga contactos de seguridad para el proyecto.

    SECURITY.md at the repository root publishes the project's security contacts: a GitHub Private Vulnerability Reporting link (https://github.com/reponomics/PolicyChecks/security/advisories/new) as the primary channel and security@reponomics.org as a fallback, together with a stated 14-day maximum for follow-up. SUPPORT.md cross-references it and explicitly directs security issues away from public issues and the general support address.



Puede utilizar herramientas y sistemas de IA para proponer cambios a través de una URL simple, como https://www.bestpractices.dev/es/projects/14356/choose/edit?osps_ac_01_01_status=Met&osps_ac_01_01_justification=GitHub+enforced. Consulte nuestro sistema de propuestas de automatización para saber cómo hacerlo. Estos datos están disponibles bajo el Acuerdo de Licencia de Datos de la Comunidad – Permisivo, Versión 2.0 (CDLA-Permissive-2.0). Esto significa que un Destinatario de Datos puede compartir los Datos, con o sin modificaciones, siempre que el Destinatario de Datos ponga a disposición el texto de este acuerdo con los Datos compartidos. Por favor, acredite a Really Him y a los colaboradores de la insignia de Mejores Prácticas de OpenSSF.

Entrada de insignia del proyecto propiedad de: Really Him.
Entrada creada el 2026-08-29 13:30:53 UTC, última actualización el 2026-09-03 22:11:17 UTC. Última obtención de la insignia de nivel básico el 2026-08-29 16:42:55 UTC.