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
Recherche d'un terme simple
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
| Champ | Terme de requête | Description |
|---|---|---|
| Contenu du patch | file.patch | Recherche dans les modifications de code |
| E-mail de l'auteur | commit.author.email | E-mail de l'auteur du code |
| Nom de l'auteur | commit.author.name | Nom de l'auteur du code |
| Nom d'utilisateur GitHub de l'auteur | author.login | Nom d'utilisateur GitHub de l'auteur |
| E-mail du committer | commit.committer.email | E-mail de la personne qui a commité |
| Nom du committer | commit.committer.name | Nom de la personne qui a commité |
| Nom d'utilisateur GitHub du committer | committer.login | Nom d'utilisateur GitHub du committer |
| Nom du fichier | file.filename | Nom du fichier modifié |
| Extension de fichier | file.file_extension | Extension 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 cherchez | Requête à utiliser |
|---|---|
| Patches contenant un terme | file.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 GitHub | author.login: username OR committer.login: username |
| Patches d'un domaine d'e-mail | commit.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écifique | source_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 :
GitGuardian→git,guardian,gitguardian - Extraction des parties d'e-mail :
user@company.com→user,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
| Champ | Type | Description |
|---|---|---|
sha | keyword | SHA du commit |
html_url | path | URL GitHub du commit |
author.id | keyword | ID GitHub de l'auteur |
author.login | keyword | Nom d'utilisateur GitHub de l'auteur |
committer.id | keyword | ID GitHub du committer |
committer.login | keyword | Nom d'utilisateur GitHub du committer |
commit.message | text | Message de commit Git |
commit.author.email | text | E-mail de l'auteur Git |
commit.author.name | text | Nom de l'auteur Git |
commit.author.date | date | Date d'auteur Git |
commit.committer.email | text | E-mail du committer Git |
commit.committer.name | text | Nom du committer Git |
commit.committer.date | date | Date de commit Git |
file.filename | path | Nom du fichier du patch |
file.patch | text | Contenu du patch |
file.file_extension | keyword | Extension de fichier |
file.sha | keyword | SHA du fichier |
file.additions | int | Lignes ajoutées |
file.deletions | int | Lignes supprimées |
file.changes | int | Lignes modifiées |
source_metadata.created_at | date | Date de traitement GitHub |
source_metadata.repo_id | keyword | ID du dépôt |
source_metadata.repo_name | text | Nom 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.comcorrespond à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
- Entire Public GitHub : recherche sur tous les dépôts GitHub publics (par défaut)
- Company perimeter : restreint les recherches au périmètre public de votre entreprise