PLEINS FEUX SUR LES FONCTIONS : Remplacements de règles basées sur des fichiers¶
Ce document décrit comment conserver les valeurs sensibles (mots de passe, clés API, tokens)
à partir du code source de FUZZY_MAP_pre / FUZZY_MAP et de l’historique Git en chargeant le
Texte de « remplacement » à partir d’un fichier séparé au moment de l’exécution au lieu de le coder en dur.
Ceci est particulièrement utile lors des diffusions en direct ou des partages d’écran, où la carte le code source lui-même peut être visible, mais le fichier référencé ne l’est pas.
1. Le concept¶
Normalement, le champ « remplacement » d’une règle est le texte de sortie littéral :
('my-secret-value', r'^(trigger)$', 85, {'command_flags': re.IGNORECASE})
Avec le remplacement basé sur les fichiers activé, une valeur de « remplacement » commençant par un
le préfixe configuré (par défaut - ou .) est plutôt traité comme un nom de fichier.
Aura résout ce nom de fichier par rapport au propre répertoire du plugin, lit son
contenu et utilise ce contenu comme texte de remplacement.
('-api_key.txt', r'^(show api key)$', 85, {'command_flags': re.IGNORECASE})
Si api_key.txt existe à côté de FUZZY_MAP_pre.py du plugin, son (supprimé)
le contenu est utilisé en remplacement. Si le fichier n’existe pas, le littéral
la chaîne -api_key.txt est renvoyée à la place (sécurité intégrée : aucune fuite accidentelle de
“fichier introuvable” comme texte utilisable, et pas de crash).
2. Paramètres¶
Configuré dans config/settings.py (ou config/settings_local.py pour les
remplacements) :
Paramètre |
Tapez |
Par défaut |
Descriptif |
|---|---|---|---|
|
|
|
Interrupteur principal pour l’ensemble de la fonctionnalité. Si « False », « remplacement » est toujours utilisé littéralement. |
|
|
|
Les valeurs de « remplacement » doivent commencer par l’un de ces préfixes pour déclencher une recherche de fichier. Vide/ |
|
|
‘Faux’ |
Si |
|
|
par ex. |
Les chemins absolus résolus commençant par l’un de ces éléments sont toujours rejetés, quel que soit |
3. Résolution du chemin¶
Le dossier est résolu comme suit :
Le
source_pathdu plugin (enregistré automatiquement par le chargeur de carte) est rejoint contreSL5NET_AURA_PROJECT_ROOT(lu depuis leSL5NET_AURA_PROJECT_ROOTvariable d’environnement) pour obtenir le répertoire du plugin.La valeur de « remplacement » est jointe à ce répertoire.
Sauf si
FILE4REPLACEMENT_ALLOW_PATH_TRAVERSALestTrue, le chemin résolu doit rester dans le répertoire du plugin, sinon la recherche est rejetée.Indépendamment de ce qui précède, tout chemin résolu commençant par une entrée dans
FILE4REPLACEMENT_DENY_PREFIXESest toujours rejeté.Si le fichier existe, son contenu supprimé est renvoyé. Sinon, le La chaîne de « remplacement » originale est renvoyée inchangée.
4. Notes de sécurité¶
N’activez
FILE4REPLACEMENT_ALLOW_PATH_TRAVERSALque si vous comprenez le implications : cela permet à tout utilisateur pouvant éditer un fichierFUZZY_MAP_pre(par ex. via un éditeur de cartes en ligne) pour lire des fichiers arbitraires que le processus Aura peut accéder et faire apparaître leur contenu sous forme de texte de sortie en direct.FILE4REPLACEMENT_DENY_PREFIXESfournit une protection de base contre répertoires système communs même lorsque la traversée de chemin est autorisée, mais elle est cela ne remplace pas la restriction des personnes autorisées à modifier les fichiers cartographiques en premier lieu.Les fichiers référencés sont du texte brut sur le disque. Combinez avec le fichier de votre système d’exploitation autorisations si le contenu est sensible.
5. Exemple¶
Voir config/maps/plugins/TEST_FILE4REPLACEMENT/ pour un exemple de plugin fonctionnel,
et tools/tests/TEST_FILE4REPLACEMENT.sh pour un script de test qui exerce
à la fois une recherche dans le répertoire et une recherche en dehors du répertoire du plugin.
# config/maps/plugins/TEST_FILE4REPLACEMENT/de-DE/FUZZY_MAP_pre.py
FUZZY_MAP_pre = [
('.Zebra.txt', r'^(Zebra)$', 85, {'command_flags': re.IGNORECASE}),
]
Créez .Zebra.txt à côté de ce fichier avec le texte de remplacement souhaité, puis
dites (ou tapez via la console) « s Zebra » pour le déclencher.