Les badges que vous avez mentionnés sont généralement des images SVG vierges sans les informations (vous pouvez jeter un coup d'œil à la section modèles ici ).
Donc, pour un service de création de SVG (ou PNG) :
- le service reçoit les données de mise à jour de votre part par l'intermédiaire d'un système de CI quelconque
- Le service génère une image correspondante (SVG ou PNG) qui est attachée à une certaine
GET
point final
Le Service dispose de deux moyens pour mettre cela en œuvre :
- Utiliser shields.io comme un service, en envoyant un JSON avec les informations sur la façon de générer l'image à leur site web. Point de terminaison JSON
- Implémenter la génération d'images en interne en utilisant shields.io comme bibliothèque ou par tout autre moyen personnalisé.
Quoi qu'il en soit, les applications SaaS qui ont des badges les servent généralement elles-mêmes (même si elles appellent shields.io en interne). Cela signifie que chaque service peut mettre en œuvre les mesures de sécurité qu'il souhaite.
Les données transmises à shields.io comprennent généralement deux mots et quelques couleurs. Il n'y a donc pas trop d'informations exposées pour générer les badges (voir l'exemple ci-dessous). De plus, la communication entre le service et shields.io est cryptée et envoyée via HTTPS.
En ce qui concerne la protection de la vie privée, les grandes entreprises disposent généralement de solutions hébergées qui ne sont accessibles qu'en interne, de sorte que les badges ne sont accessibles qu'en interne également.
Les badges mentionnés dans votre question ne contiennent que des données publiques provenant de magasins d'applications ou d'étoiles pour un projet GitHub, etc. qui sont généralement publiques tant que le projet lui-même est public. Ces badges utilisent très souvent l'API shields.io pour les générer automatiquement en utilisant les données publiques.
Mais si vous regardez les badges pour des choses comme Coveralls ou Travis, vous verrez qu'ils ont leurs propres badges :
Voici un petit exemple de typecript sur la façon de créer un badge en utilisant la bibliothèque shields.io et de le servir :
Installez d'abord badges gh avec
npm i gh-badges --save
et voici comment l'utiliser :
import { BadgeFactory } from 'gh-badges';
(async () => {
const bf = new BadgeFactory();
const format = {
format: 'svg',
text: [ 'coverage', '90%' ],
labelColor: '#894597',
color: '#5d5d5d',
template: 'for-the-badge',
logo: [
'data:image/png;base64,iVBORw0KGgoAAAA',
'NSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJL',
'R0QA/wD/AP+gvaeTAAAA/0lEQVRYhe3WMU7DM',
'BjFcadqh0qdWWBl7QU4Ss/AjsREF8RdOhYO0E',
'qoN2DhFIgBOvBjIIMVxSFyUiEhP8lD7C/v/T9',
'7sEMoKkoIe+Npn8qpOgCM2VBVVa1ZkzFDcjQd',
'apDqLIR+u/jnO1AACkABKABdAO9DjHEWfb7lA',
'LwOAQghXPXx6gJ4zE3GJIRwE0095Zhc4PO3iz',
'7x7zoq+cB5bifr9tg0AK7xFZXcZYXXZjNs+wB',
'giofG8hazbIDaeI5dFwAu8dxY2mE+KDyCWGCT',
'YLj3c86xNliMEh5BVLjFseNEjnVN8pU0BsgSh',
'5bwA5YnC25AVFjhpR6rk3Zd9K/1Dcae2pUn6m',
'qiAAAAAElFTkSuQmCC'
].join('')
};
return bf.create(format);
})();
Il s'agit essentiellement des mêmes données que celles envoyées au service shields.io mentionné ci-dessus.
Vous pouvez voir l'exemple complet dans le contexte d'un contrôleur aquí y aquí .
En ce qui concerne les risques, il faut surtout penser aux données qui sont réellement exposées ici. Et si vous vous inquiétez de la confidentialité des données, vous pouvez simplement générer les badges vous-mêmes et les diffuser ou les intégrer de manière aussi privée que vous le souhaitez ;-)