Gamer’s Life, son histoire

Si vous voyez cet article c’est que Gamer’s Life est en ligne après des mois de dev, de changement de direction, de modification, d’ajout, de suppression… bref il est là !

Ah, c’est pour ça que tu ne postais plus rien ? Sinon qu’est ce que c’est ce truc ?

Gamer’s Life se veut être un site amusant, l’idée est que dans le monde des jeux vidéo qui prend de plus en plus d’ampleur aujourd’hui les joueurs aiment bien se raconter leurs mésaventures, des histoires « WTF » etc..

Le commencement.

L’idée m’est venue courant mars 2015, je cherchais un projet sympa à commencer et en observant les gens qui m’entourent, je me suis rendu compte que c’était monnaie courante de faire des debrief sur les « conneries » qui leur arrivent dans les jeux, et il n’y avait aucun endroit sur le Net pour référencer ces histoires croustillantes.

Et le nom tu l’as trouvé tout seul ?

Et non ! J’ai parlé de l’idée à un pote (Baptiste), il a eu l’idée de Gamer’s Life et pour rajouter du fun, au début on a décidé de prendre gamers-life.wtf, mais plus tard on s’est rendu compte d’un problème sur ces domaines un peu « exotiques », c’est simple quand on partage un lien avec ce genre de domaine sur Skype par exemple, celui-ci n’interprète pas ce lien comme un lien HTTP, il faut le copier/coller dans le navigateur. Skype étant massivement utilisé chez les Geeks on a donc décidé de se rétracter sur quelque chose de plus conventionnel => gamers-life.fr, c’est moins fun, mais au moins c’est un domaine « standard » et il n’y aura qu’à cliquer sur Skype : D (merveilleux n’est-ce pas ? on pense à tout sisi !).

Le nom permet également d’utiliser « GL » et tout le monde connaît « Good Luck » qui rajoute un petit clin d’œil aux joueurs.

Et ce hérisson « Moo » ; il sort d’où ?

Quelques mois après le lancement initial de l’idée, je cherchais discrètement quelqu’un pour gérer la communauté/la com de Gamer’s Life, il me fallait quelqu’un avec certaines qualités :

  • Socialement irréprochable
  • Un français parfait
  • Une ouverture d’esprit suffisante pour se dire que Gamer’s Life pouvait être une idée sympa bien que rien n’était encore là.

Après quelques recherches je me suis tourné vers Prudence que j’ai connu dans les jeux vidéo, j’ai pu voir son travail sur d’autres sites auparavant… ça me paraissait coller. J’ai commencé à lui parler de l’idée, il n’a pas fallu longtemps pour qu’elle accepte de nous rejoindre. L’équipe est donc passée à 3 personnes.

Quelques jours plus tard Prudence nous a pris de court en nous sortant un Hérisson de nulle part qu’elle a dessiné… on l’a adoré tout de suite… et maintenant vous le connaissez il a piqué la place du G dans Gamer’s Life. Plus tard nous avons décidé de l’appeler Moo mais la raison de ce choix vous la découvrirez plus tard !

Et donc on parle un peu technique ou c’est devenu un blog où tu racontes ta vie ?

Yep, durant les premiers mois de développement on avait plein d’idées, la première question était « On utilise TLS ou on laisse les données se balader en clair ? », la réponse a vite été trouvée… HTTPS est dans l’air du temps ! de plus je voulais axer le développement sur la sécurité, le respect des utilisateurs et leur vie privée. Le protocole retenu a donc été HTTPS (TLS 1.2 favorisé), avec SPDY pour favoriser la connectivité depuis la 3G/4G.

C’est bien beau HTTPS, mais ce n’est pas infaillible.

C’est vrai HTTPS a ses défauts, on ne va même pas aller parler de HeartBleed sachant que ça a été corrigé et que j’espère que plus aucun site n’est vulnérable (et que tous les certificats utilisés sur une version vulnérable d’OpenSSL ont été révoqués). Le maillon le plus faible dans la chaîne de sécurité qu’est ce système est la génération et l’obtention du certificat, ça s’est déjà vu que des Autorités de Certification se fassent « pirater » pour permettre à l’attaquant de signer des certificats sur des domaines ne lui appartenant pas… bref ou alors suffit d’utiliser Windows Live et demander gentiment un certificat : D.

Le choix a été de prendre une autorité de « confiance » plutôt que d’attendre l’arrivée de Let’s Encrypt, au début nous pensions à StartSSL (la même CA qui est utilisée sur ce blog), gratuit, fonctionnel. Mais voilà StartSSL a des problèmes avec ses serveurs OCSP et Firefox par défaut vérifie l’état OSCP donc ça voudrait dire qu’il y aurait des « down time » pour les utilisateurs du Panda roux, je les tolère sur mon blog perso, mais pas sur Gamer’s Life. De plus Gamer’s Life est un site qui doit être consultable depuis n’importe quel terminal ; or la PS3 ainsi que certaines consoles de Nintendo n’ont pas le certificat racine de StartSSL dans leur « trust store ». Nous nous sommes donc orientés vers un certificat de chez Comodo, reconnu partout et leurs serveurs n’ont pas problème pour répondre aux requêtes OCSP.

C’est bien tout ça, mais ça ne règle pas le souci qui fait que si l’utilisateur tape http://gamers-life.fr dans son navigateur la première requête est en clair.

Tout à fait ! Pour régler partiellement ce problème, nous avons utilisé HSTS. Lors de la première connexion en HTTP ou HTTPS au site, le serveur renvoie dans le header de STRICTEMENT utiliser HTTPS pour les deux prochaines années pour toute connexion sur le domaine gamers-life.fr (et ses sous-domaines comme le forum). Pour ceux qui se demandent comment l’implémenter dans NGINX il suffit d’ajouter ceci dans votre conf :

Comme j’ai dit, cela règle partiellement le problème. En effet la première fois qu’un utilisateur tape http://gamers-life.fr, si ses DNS sont des menteurs, ou que sont cache DNS est « empoisonné » celui-ci peut être redirigé vers n’importe quel serveur se faisant passer pour Gamer’s Life… C’est pour cela que nous avons soumis le site à la liste HSTS du projet Chromium. Pour faire simple dans une des prochaines mises à jour des navigateurs, le domaine gamers-life.fr sera hard-codé comme étant un site utilisant uniquement HTTPS comme moyen de communication. Cela aura pour effet que, même lors de la première requête HTTP, le navigateur redirigera automatiquement l’utilisateur sur HTTPS sans même demander de réponse HTTP de la part du serveur, et à partir de là, HTTP sera hors circuit pour tous les utilisateurs ayant un navigateur à jour (vous pouvez voir que le domaine est bien dans le code source de Chromium).

HTTPS ne couvre pas toutes les failles existantes, tu le sais ça hein rassure nous !

Ah bon ? Ah bah je savais pas :'(

Plus sérieusement Doctrine et ses filtres sont utilisés pour empêcher les injections SQL [eh oui Symfony se cache derrière Gamer’s LIfe, mais ça si vous êtes malins vous le savez déjà !]. En ce qui concerne les injections de JavaScript/HTML, en plus du nettoyeur intégré de Twig, nous utilisons des filtres à l’envoi de commentaires et/ou d’histoires. Enfin l’une des finalités des attaques est de voler le cookie Remember Me ou encore le Cookie de Session, pour ça c’est simple, les cookies sont envoyés au client avec les tag « httpOnly » et son pote le tag « Secure », le premier rend la lecture du contenu du cookie impossible depuis JavaScript, la seconde empêche l’envoi du cookie sur une connexion non HTTPS.

Le moteur de commentaires fait passer les commentaires contenant des liens par la modération pour protéger nos utilisateurs de liens malveillants.

Tout ça, c’est bien beau, mais si le site utilise les boutons des réseaux sociaux, tu as beau être « sécurisé » ton site ne respecte pas la vie privée de ses utilisateurs.

Les boutons de réseaux sociaux sur le site sont des boutons qui sont propres au site, rien n’est chargé directement depuis Facebook, si un utilisateur ne clique pas dessus alors le réseau social en question ne saura jamais que l’utilisateur est sur Gamer’s Life, s’il clique c’est qu’il utilise ledit réseau.

Pour récupérer la valeur du nombre de j’aime, nos serveurs utilisent les API des réseaux sociaux pour obtenir le nombre de partages, le navigateur de l’utilisateur qui ne souhaite pas utiliser Facebook ne communiquera jamais avec Facebook, la même pour Google et Twitter.

Lorsqu’un utilisateur souhaite s’enregistrer via un tiers [Facebook, Google, Microsoft ou encore Twitch] ce tiers n’est sollicité qu’au moment du login, une fois connecté il est totalement indépendant du réseau qu’il utilise pour se connecter. Il peut se déconnecter de Gamer’s Life tout en restant connecté sur le tiers utilisé et inversement [il peut même activer « se souvenir de moi » dans ses paramètres].

En ce qui concerne l’outil de statistiques, c’est Piwik [ça ne surprendra personne hein ! Pourquoi est-il en test depuis quelques mois sur ce blog à votre avis ? : D], Piwik est configuré pour anonymiser les IP des utilisateurs ; de plus le Cookie de traçage est valide uniquement 13 mois et il est possible de le désactiver dans les « Mentions légales » via l’iFrame proposé par Piwik ce qui nous permet de ne pas afficher le bandeau prévenant de l’utilisation des Cookies sur le site.

En ce qui concerne les serveurs mails, aucun serveur mail externe, tout est géré par nos soins, Postfix tout ça tout ça : p.

Il est possible de poster des histoires de manière anonyme si vous souhaitez qu’on ne sache pas que ce soit vous derrière une histoire.

Pourquoi se donner autant de mal pour sécuriser le site et respecter la vie privée des utilisateurs ? Ce site n’est pas une banque.

Gamer’s Life ne peut exister que par les contributions extérieures de ses utilisateurs, de ce fait il faut bien vérifier les informations envoyées au site avant de les proposer aux autres utilisateurs afin de les protéger. Pour protéger ses utilisateurs, le site doit d’abord se protéger lui même. De plus les Gamers sont des cibles de choix pour le phishing… il est bien sûr HORS DE QUESTION qu’un de nos utilisateurs soit victime de phishing à cause de nous !

En ce qui concerne le travail en rapport avec la vie privée des utilisateurs, c’est simple, pour gagner la confiance des gens il faut prouver qu’on en est digne, même si cela prend du temps et nous rajoute du travail [c’est sur créer une ID Google Analytics c’est plus simple que mettre Piwik en place]. Si on respecte les gens, ils nous respecteront.

Malheureusement je ne peux pas promettre que le site n’aura jamais aucune pub. Plus tard s’il y a de la publicité sur le site ce sera pour assurer son fonctionnement.

Tu as eu l’idée en mars et tu sors le site en septembre ? Tu en as mis du temps pour « pas grand-chose » !

En fait toutes les fonctionnalités du site ne sont pas encore accessibles aux utilisateurs, car elles n’ont aucune pertinence sans « beaucoup » de contenue, du coup elles sont dans le code, mais ne sont pas encore accessibles. Il y a également d’autres parties du « site » codées qui seront utiles pour la suite des événements… mais ça vous le verrez plus tard : D Android… IOS… tout ça tout ça ! [quoi ? non je n’ai rien dit !]

Vous avez aimé cet article ? Partagez-le :)

Facebook Google Plus Twitter Linkedin email

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *