Repository navigation
Security FR
Maquette tourne dans l'interface de Home Assistant avec les droits de l'utilisateur connecté. N'importez des plans et des modèles que de personnes de confiance ; la carte vous protège tout de même ainsi.
- Les actions sensibles sont toujours confirmées
- Forcer la confirmation :
confirm: true - Vérification à l'import
- Ce qu'un plan ne peut jamais faire
- Signaler une faille
Chaque service appelé depuis le plan (boutons des pièces, widgets des panneaux latéraux et des fiches, interrupteurs marche / arrêt, boutons Activer) est comparé à une liste de services sûrs. Tout autre service ouvre un dialogue qui indique :
- l'action réelle et le service (
lock.unlock), quel que soit le libellé du bouton ; - les entités visées (nom et identifiant) ;
- les clés des données envoyées, jamais leurs valeurs (un code reste caché).
Le titre est l'action : Déverrouiller ?, Ouvrir la porte ?, Allumer ?, Éteindre ?, Basculer ?, Changer la consigne ?, Lancer le script ?… Annuler a le focus ; Échap annule.

| Sûrs (sans dialogue) | Sensibles (toujours confirmés) |
|---|---|
turn_on, turn_off, toggle des lumières, interrupteurs, ventilateurs, booléens, humidificateurs, lecteurs, climatiseurs, télécommandes, automatisations ; réglages des ventilateurs, humidificateurs, climatiseurs, chauffe-eau et lecteurs |
lock.unlock, lock.open
|
scene.turn_on ; valeurs des input_number, number, input_select, select
|
alarm_control_panel.alarm_disarm, alarm_trigger
|
cover.close_cover, stop_cover ; valve.close_valve, stop_valve
|
Ouvrir une cover, sauf si toutes les cibles sont des volets, stores, rideaux, bannes ou fenêtres (device_class) : portes de garage, portails, portes et covers sans classe sont confirmés |
lock.lock ; alarm_control_panel.alarm_arm_*
|
valve.open_valve, set_valve_position, toggle
|
homeassistant.turn_on / turn_off / toggle quand toutes les cibles sont dans un domaine sûr |
script.*, button.press, input_button.press, automation.trigger, homeassistant.restart / stop, shell_command, rest_command, notify… et tout service absent de la liste des sûrs
|
La liste exacte est dans Référence › Sécurité.
confirm: true demande une confirmation même pour un service sûr, partout où un service est appelé :
| Où | Ce qui est confirmé |
|---|---|
Boutons des pièces (rooms[].actions[].confirm) |
Le service du bouton |
Bulles, ouvertures, meubles connectés (confirm sur l'élément) |
Leur interrupteur marche / arrêt, dans leur fiche et dans la vue de la pièce |
Widgets (confirm sur le widget) |
Interrupteurs et boutons Activer de ses lignes, −/+ du thermostat, boutons des widgets cover et lock |
Cas typique : une porte de garage, un portail ou un radiateur commandé par un switch.
| L'option sur une bulle | Le dialogue pour un service sûr |
|---|---|
![]() |
![]() |
badges:
- entity: switch.garage_door
pos: [120, 40]
confirm: true # marche et arrêt confirmés, depuis la fiche et depuis la vue de la pièce
rooms:
- name: Séjour
poly: [[0, 0], [450, 0], [450, 380], [0, 380]]
actions:
- {name: Tout éteindre, icon: mdi:power, action: homeassistant.turn_off, target: room, confirm: true}-
confirm: falsene retire jamais la confirmation d'un service sensible. - Les widgets
coverconfirment par défaut pour les portes de garage, portails, portes et vannes ; les widgetslockconfirment toujours Déverrouiller et Ouvrir. -
protected: true(bulles, ouvertures, meubles) empêche d'éteindre l'appareil depuis le plan : pas d'interrupteur « arrêt » dans sa fiche, interrupteur grisé quand il est allumé dans la vue de la pièce.
Dans l'éditeur : Toujours demander confirmation sur un bouton de pièce, dans la section fiche d'une bulle, d'une ouverture ou d'un meuble, et sur les widgets liste et thermostat ; Confirmer avant d'agir sur les widgets cover et lock.
Exporter / importer › Importer (un fichier, un collage ou un modèle) montre d'abord un récapitulatif et n'applique rien tant que vous n'avez pas cliqué sur Importer :
- les services des boutons des pièces, les sensibles marqués Confirmation à chaque appui ;
- les entités commandées par des widgets (cover, lock, thermostat, lignes Activer) ;
- les liens Plus d'infos ;
- les valeurs retirées car invalides, avec leur chemin (
rooms[0].poly,badges[8].color…) ; - les clés du tableau de bord du fichier qui sont ignorées (
view_layout,grid_options,visibility,card_mod…) : la carte garde les siennes.

Réimporter le plan sans changement l'applique directement. Limites : 2 Mo de texte, 40 niveaux d'imbrication, 5 000 éléments par liste ; le YAML est lu sans ses types étendus. Les brouillons et copies gardés dans le navigateur sont relus de la même façon.
-
Exécuter du code. Chaque valeur est contrôlée avant d'être dessinée : coordonnées et nombres doivent être des
nombres finis, les valeurs énumérées doivent être connues, les textes s'affichent toujours comme du texte. Une valeur
invalide est retirée, avec un avertissement unique dans la console du navigateur
(
maquette-card : invalid value(s) removed: …). -
Utiliser une couleur douteuse. Les couleurs acceptent
#rgbà#rrggbbaa,rgb()/hsl()avec des nombres, un nom de couleur CSS (red,teal…) ou une variable du thème (var(--primary-color)). Tout le reste est retiré : une couleur ne peut jamais charger une image ni changer le style de la page. -
Charger quelque chose depuis un autre site. La carte ne fait aucune requête hors de Home Assistant. L'avatar d'une
personne n'est affiché que si sa photo est servie par Home Assistant lui-même (chemin commençant par
/) ; sinon ses initiales. - Agir toute seule. Rien n'est appelé sans un toucher ; l'historique, les statistiques et les éléments liés sont seulement lus.
Où sont stockés le plan et ses copies : Vie privée, sécurité et performances.
Merci de ne pas ouvrir d'issue publique : utilisez Security › Report a vulnerability sur le
dépôt. Voir SECURITY.md dans le dépôt.

