Aller au contenu principal

Syntaxe de recherche

Explore utilise un langage de requête puissant pour rechercher dans les commits et patches GitHub publics. Ce guide couvre la syntaxe essentielle pour construire des recherches efficaces afin de trouver des secrets liés à votre organisation.

Concepts de recherche de base

Saisissez un terme dans la barre de recherche pour rechercher dans tous les champs indexés :

yourcompany

Opérateurs booléens

Combinez les termes à l'aide d'opérateurs booléens :

  • AND — les deux termes doivent être présents
  • OR — au moins un des termes doit être présent
  • NOT — exclure un terme

⚠️ Les opérateurs booléens DOIVENT être en LETTRES MAJUSCULES.

yourcompany AND database
yourcompany OR yourdomain
yourcompany AND NOT test

Pour les requêtes complexes mélangeant plusieurs opérateurs, utilisez des parenthèses :

(yourcompany OR yourdomain.com) AND database AND NOT test

Recherches par champ

Ciblez des types d'informations spécifiques en précisant dans quel champ chercher :

Champs de recherche courants

ChampTerme de requêteDescription
Contenu du patchfile.patchRecherche dans les modifications de code
E-mail de l'auteurcommit.author.emailE-mail de l'auteur du code
Nom de l'auteurcommit.author.nameNom de l'auteur du code
Nom d'utilisateur GitHub de l'auteurauthor.loginNom d'utilisateur GitHub de l'auteur
E-mail du committercommit.committer.emailE-mail de la personne qui a commité
Nom du committercommit.committer.nameNom de la personne qui a commité
Nom d'utilisateur GitHub du committercommitter.loginNom d'utilisateur GitHub du committer
Nom du fichierfile.filenameNom du fichier modifié
Extension de fichierfile.file_extensionExtension du fichier modifié

Exemples de recherche par champ

# Search for patches from a specific email
commit.author.email: john@yourcompany.com

# Search patch content
file.patch: database

# Search across multiple fields
commit.author.email: @yourcompany.com OR file.patch: yourcompany

Rechercher des phrases

Utilisez les guillemets pour rechercher des termes qui apparaissent ensemble :

file.patch: "production database

Correspondance exacte de mots-clés

Pour des correspondances exactes (sensibles à la casse), ajoutez le suffixe .keyword :

source_metadata.repo_name.keyword: "YourCompany/api-service"

Exemples de recherches pratiques

Ce que vous cherchezRequête à utiliser
Patches contenant un termefile.patch: yourcompany
Patches avec plusieurs termes (OR)file.patch: yourcompany OR file.patch: yourdomain
Patches avec plusieurs termes (AND)file.patch: yourcompany AND file.patch: database
Patches d'un nom d'utilisateur GitHubauthor.login: username OR committer.login: username
Patches d'un domaine d'e-mailcommit.author.email: @yourcompany.com OR commit.committer.email: @yourcompany.com
Patches d'une personne spécifique(commit.author.name: "John Doe") OR (commit.committer.name: "John Doe")
Patches d'un utilisateur après une date(author.login: username OR committer.login: username) AND commit.committer.date:{2024-01-01 TO *}
Patches d'un utilisateur sur une plage de dates(author.login: username OR committer.login: username) AND (commit.committer.date:{2024-01-01 TO 2024-03-31})
Patches de plusieurs utilisateurs(author.login: (user1 OR user2) OR committer.login: (user1 OR user2))
Patches dans un dépôt spécifiquesource_metadata.repo_name: yourrepo
Capacités de recherche avancées

Types de champs et recherche avancée

Différents types de champs prennent en charge différentes méthodes de recherche :

Champs date

Utilisez les opérateurs de plage avec des dates au format ISO 8601. Toutes les dates sont stockées en UTC.

# After a date (inclusive)
source_metadata.created_at:[2024-01-01 TO *]

# Between dates (exclusive start, inclusive end)
commit.author.date:{2024-01-01 TO 2024-03-31]

# Before a date (exclusive)
commit.committer.date:[* TO 2024-01-01}
  • Crochets [] = inclusif
  • Accolades {} = exclusif
  • Astérisque * = wildcard pour des plages ouvertes

Champs entiers

Recherchez les champs numériques avec des valeurs exactes ou des plages :

# Exactly 10 additions
file.additions: 10

# At least 100 additions
file.additions: [100 TO *]

# Between 50 and 200 additions
file.additions: [50 TO 200]

Champs Text vs Keyword

  • Champs Text (par ex. file.patch) : tokenisés et analysés pour une recherche flexible
  • Champs Keyword (par ex. source_metadata.repo_name.keyword) : correspondance exacte, sensible à la casse

Traitement des champs Text

Les champs Text comme file.patch font l'objet d'un traitement complexe :

  • Découpage sur les caractères spéciaux (/, :, =, etc.)
  • Extraction des termes camelCase : GitGuardiangit, guardian, gitguardian
  • Extraction des parties d'e-mail : user@company.comuser, company.com, user@company.com
  • Extraction des composants de domaine et des parties d'adresse IP
  • Conversion en minuscules
  • Suppression des termes plus courts que 3 caractères

Référence complète des champs

ChampTypeDescription
shakeywordSHA du commit
html_urlpathURL GitHub du commit
author.idkeywordID GitHub de l'auteur
author.loginkeywordNom d'utilisateur GitHub de l'auteur
committer.idkeywordID GitHub du committer
committer.loginkeywordNom d'utilisateur GitHub du committer
commit.messagetextMessage de commit Git
commit.author.emailtextE-mail de l'auteur Git
commit.author.nametextNom de l'auteur Git
commit.author.datedateDate d'auteur Git
commit.committer.emailtextE-mail du committer Git
commit.committer.nametextNom du committer Git
commit.committer.datedateDate de commit Git
file.filenamepathNom du fichier du patch
file.patchtextContenu du patch
file.file_extensionkeywordExtension de fichier
file.shakeywordSHA du fichier
file.additionsintLignes ajoutées
file.deletionsintLignes supprimées
file.changesintLignes modifiées
source_metadata.created_atdateDate de traitement GitHub
source_metadata.repo_idkeywordID du dépôt
source_metadata.repo_nametextNom du dépôt

Note : de nombreux champs ont à la fois une version text et keyword (par ex. commit.author.name vs commit.author.name.keyword).

Limitations de recherche

Limitations des champs Text

  • Impossible de rechercher des termes plus courts que 3 caractères
  • Impossible de rechercher des nombres inférieurs à 10 000
  • Impossible de rechercher directement des caractères spéciaux : ; , " ' = : / \ $ # & ~ | ^ < > [ ] ( ) ? ! § * °`
  • Impossible de faire de la recherche exacte de sous-chaîne

Recherche de sous-domaines

La recherche de domaine a un comportement spécifique :

  • Domaines à 3 niveaux ou moins : file.patch: company.com correspond à api.company.com
  • Domaines à plus de 3 niveaux : nécessite une correspondance exacte ou une recherche sur le sous-domaine intermédiaire

Construire des recherches efficaces

Concentrez vos recherches sur les termes les plus susceptibles d'apparaître à proximité de secrets :

  • Domaines de l'entreprise : yourcompany.com, api.yourcompany.com
  • Modèles d'e-mail : @yourcompany.com, e-mails spécifiques d'employés
  • Services internes : noms de bases de données, endpoints d'API, identifiants de service
  • Noms de dépôts : dépôts appartenant à l'entreprise
  • Activité utilisateur : noms d'utilisateurs d'employés actuels ou anciens

À retenir : des recherches plus spécifiques donnent des résultats plus actionnables et permettent de rester sous la limite de 10 000 résultats requise pour le scan.

Options de portée de recherche