Moonz a écrit 3657 commentaires

  • [^] # Re: Nom de domaine .netlib.re

    Posté par  . En réponse au journal Hébergement mutualisé pas cher. Évalué à 4.

    Pour choper l’IP externe, tu as plus propre que d’interroger un service web : tu as l’outil external-ip de miniupnpc

  • [^] # Re: la politique c'est la vie

    Posté par  . En réponse au sondage Pour ou contre le hors sujet sur LinuxFr.org ?. Évalué à 5.

    J’en utiliserais pas, car ça n’a rien à voir. Les libertariens se sont inspirés des anarchistes mais l’idéologie n’a rien à voir. Franchement si tu lis la page Wikipédia de l’anarchisme et celle du libertarianisme, les idéologies sont quasiment opposées en tout point, malgré quelques vagues ressemblances de surface.

    • La liberté individuelle comme valeur politique suprême
    • La notion de sécession individuelle
    • L’association libre plutôt que l’intégration politique forcée

    Tout ça, ça me semble un peu plus profond que des « vagues ressemblances de surface », et ce sont des valeurs partagées entre les libertariens (anti-état) et les anarchistes (au sens restreint).

    Allez, petit jeu. Tu n’as pas le droit à Google. Deux citations d’auteurs anarchistes (au sens large) qui tentent de définir leur vision de l’anarchisme en une phrase. L’un est “anarcho”-capitaliste (je met les guillemets pour te faire plaisir ;)), l’autre est anarcho-communiste. Essaie de deviner qui est quoi :

    1. « L’anarchie consiste à n’accepter aucun chef pour imposer des règles dont on ne veut pas. »

    2. « La clef de l’anarchie, présente dans son principe fondateur, est l’accord libre de l’individu, qui peut accepter ou rejeter une règle sans être exposé à une contrainte ayant une origine humaine externe. Toute société, toute organisation, tout principe social fonctionnant sur la base du consentement libre de chaque membre est anarchiste. »

    (réponse au jeu ici)

    Question bonus : quelle est la différence fondamentale entre ces deux positions, qui justifie de séparer les deux ?

    Tu n’as pas répondu à une autre question qui me semble importante : comment expliquer le fait que des auteurs comme Stirner, Spooner ou Belleguarigue soient considérés comme représentatifs simultanément des deux pôles de l’anarchisme au sens large, si les similarités ne sont que de surface ?

    Le mouvement du logiciel libre c’est quand même de promouvoir les libertés d’utiliser comme on veut, t’étudier, de modifier et de redistribuer les logiciels. Y a pas d’autorité qui peut garder le code source sous clé, on peut pas t’empêcher d’apprendre, on peut pas t’empêcher de distribuer indépendamment.

    Rien d’anti-capitaliste là dedans.

    C’est quand même moyen capitaliste de plus avoir de droits exclusifs, de droits de propriété privée sur ton code source sans aucune contrepartie. Le Logiciel Libre, c’est un peu l’abolition de la propriété privée des moyens de productions (de logiciel) (coucou Marx).

    Pour le coup je crois que ton biais « libertarien = capitaliste = méchant exploiteur » met des mots dans ta bouche là :). Tu ne peux absolument pas dire que le libertarianisme est intrinsèquement et nécessairement pro-propriété-intellectuelle, à moins de prétendre que tu connais le libertariannisme mieux que les libertariens eux-mêmes. Si, historiquement, les libéraux et libertariens sont effectivement partagés sur la propriété intellectuelle, la position majoritaire est de plus en plus anti propriété intellectuelle, et ce pour une raison très simple : la propriété intellectuelle est nécessairement une limitation de la propriété privée. Par exemple, si tu poses un brevet sur la roue, ça signifie qu’il me sera interdit d’utiliser mes moyens de production (ma propriété privée) pour fabriquer des roues. Et ça, comme tu dis, c’est « quand même moyen capitaliste » ;).

    Sur l’équivalent d’anarchopédia pour les libertariens :

    Modern libertarians (..,) consider the term to be self-contradictory, because ideas and patterns are not scarce or rivalrous, so logically cannot be owned.

  • [^] # Re: la politique c'est la vie

    Posté par  . En réponse au sondage Pour ou contre le hors sujet sur LinuxFr.org ?. Évalué à 2.

    Abolir la propriété privée d’une œuvre matérielle, c’est la placer dans le domaine public. Utiliser les droits d’auteurs pour faire « comme si », ça donne quelque chose comme la CC0 ou la WTFPL (éventuellement BSD/MIT). Pas la GPL, qui impose des obligations aux développeurs de versions dérivées, obligations qui auraient toujours leur sens dans un monde sans propriété intellectuelle, et obligations indéfendables devant un tribunal dans un monde sans propriété intellectuelle.

    S’il n’y avait que le domaine public, rien n’empêcherait, disons Sun, de reprendre GNU/Hurd, d’y apporter ses modifications et de distribuer (et même de faire payer) un binaire compilé sans fournir l’accès au code source modifié. On perd donc l’intérêt fondamental qu’a la GPL pour ses défenseurs : le fait que les dérivés d’un logiciel libre restent libres.

    Tout logiciel dans le domaine public n’est pas nécessairement libre. Le domaine public, c’est grosso modo la liberté de redistribution. Le logiciel libre, c’est plus que ça, et il te faut à minima l’accès au code source, ce que le domaine public ne garantit absolument pas. Les abandonwares sont souvent considérés comme du (quasi-)domaine public (même si ça ferait tourner tout rouge un avocat ;)), mais ils ne sont pas libres. Non seulement le domaine public ne garantit pas la liberté du logiciel, mais il détruit la possibilité d’un bon paquet de clauses visant à le protéger : clauses anti-tivoisation (qu’est-ce qui empêcherait tivo de faire ce qu’il a fait dans un monde sans propriété intellectuelle ? absolument rien), clauses d’extension de la notion d’utilisateur (AGPL3), copyleft.

  • [^] # Re: la politique c'est la vie

    Posté par  . En réponse au sondage Pour ou contre le hors sujet sur LinuxFr.org ?. Évalué à 2. Dernière modification le 02 avril 2016 à 17:01.

    Je ne vois absolument d’où tu sors cette notion de possession d’une idée. Je ne parle que d’une chose dans mon message initiale : de la base juridique qui permet de défendre la GPL devant les tribunaux. En France, ce sont les lois qui sont dans le Code de la Propriété Intellectuelle ; sans cette propriété intellectuelle, le mécanisme de « copyleft » de la GPL (et licences équivalents) est impossible. Autrement dit, une grosse partie du logiciel libre repose fortement sur le concept juridique quasi-universel (en occident du moins, ailleurs j’en sais rien ;)) de propriété intellectuelle. Il est donc faux de dire que le logiciel libre s’oppose à la propriété intellectuelle.

    C’est tout ce que j’ai dit. Jamais je n’ai parlé de propriété d’une idée.

  • [^] # Re: la politique c'est la vie

    Posté par  . En réponse au sondage Pour ou contre le hors sujet sur LinuxFr.org ?. Évalué à 4.

    Les libertariens sont très loin de l’anarchisme

    Alors quel terme général utiliserais-tu pour désigner l’ensemble des positions idéologiques communes aux libertariens « anarchistes » et aux anarchistes « de gauche » ? À ma connaissance, Stirner, Spooner et Belleguarrigue ne sont pas rejetés hors de la tradition anarchiste que tu défends par exemple, et sont considérés comme des auteurs fondamentaux pour les libertariens. Alors à moins de prétendre que les libertariens sont des analphabètes, il va bien falloir trouver un terme pour désigner ce recouvrement, et « anarchisme » me semble tout à fait convenable pour cet usage. Par exemple, sur ta proposition, « Le fait de donner la possibilité de passer outre un pouvoir qu’on ne juge pas légitime est anarchiste », un libertarien sera 100% d’accord avec toi tandis qu’un mélenchonniste ne sera pas du tout d’accord.

    Le problème de ton message c’est que tu commences par définir l’anarchisme par l’anarchisme anti-capitaliste (bon, pourquoi pas), pour ensuite remarquer l’intersection entre certaines valeurs du logiciel libre et certaines valeurs de l’anarchisme, pour enfin en conclure que le logiciel libre porte des valeurs anti-capitalistes. C’est complètement fallacieux : toute valeur anarchiste (même au sens limité) n’est pas anti-capitaliste, et ces valeurs communes à l’anarchisme et au logiciel libre font partie des valeurs non spécifiquement anti-capitalistes de l’anarchie (la preuve : un libertarien ne les désavouerait pas).

  • [^] # Re: la politique c'est la vie

    Posté par  . En réponse au sondage Pour ou contre le hors sujet sur LinuxFr.org ?. Évalué à 3.

    contestation de la propriété

    Non. Contestation de la propriété intellectuelle à la limite, et encore par une frange je pense minoritaire du logiciel libre. Sans propriété intellectuelle, absolument rien ne m’empêcherait de prendre un logiciel sous GPL, de l’améliorer et d’en faire un binaire que je revendrai sous une licence propriétaire.

  • [^] # Re: chut !

    Posté par  . En réponse au message [Résolu] Sucre syntaxique autour de subprocess. Évalué à 2.

    C’était bien ça, merci :)

  • # {{pas clair}}

    Posté par  . En réponse au journal [HS] Déchéance de nationalité et constitutionnalisation de l'état d'urgence bronsonisés. Évalué à 2.

    et de faire partir de son gouvernement un grand symbole

    Je ne vois pas bien à quoi tu fais référence. Tu pourrais expliciter ?

  • [^] # Re: WebAssembly

    Posté par  . En réponse à la dépêche Firefox 45 ESR et autres actualités mozilliennes. Évalué à 10. Dernière modification le 30 mars 2016 à 12:15.

    J’avoue, politicien, c’est assez violent comme insulte quand même.

  • [^] # Re: Ne regardons pas par le petit bout de la lorgnette non plus...

    Posté par  . En réponse à la dépêche La seule chose que Microsoft doit faire - mais ne fera pas - pour gagner la confiance open-source. Évalué à 6.

    Le fait qu'ils aient produit un peu de code libre il y a 3 ans ne change que 1% du truc car ils n'ont fait que le strict nécessaire

    En quoi la libération de .Net, F#, Chakra ou rDSN était strictement nécessaire ?

  • [^] # Re: ouai

    Posté par  . En réponse au journal Données vs Code. Évalué à 3.

    Par exemple tu as un tableau d'entier (ton type initial) et tu va créer un type tableau d'entier trié (ton type de sortie) et seul tes méthodes de tris sortent ce type précis.

    Pour ton exemple de tableau d’entier, tu peux ajouter une autre contrainte (orthogonale au tri), par exemple que les éléments doivent être uniques. Ou pairs. Ou compris entre 1 et 12 (mois). Comment tu composes ces contraintes (trié + pairs par exemple) si chaque contrainte donne naissance à un seul type ?

  • [^] # Re: Ne regardons pas par le petit bout de la lorgnette non plus...

    Posté par  . En réponse à la dépêche La seule chose que Microsoft doit faire - mais ne fera pas - pour gagner la confiance open-source. Évalué à 9. Dernière modification le 28 mars 2016 à 21:05.

    Évidemment qu’ils font de l’open source qui les arrangent. Et alors ? Red Hat aussi fait de l’open source qui les arrangent. Moi-même je fais de l’open source qui m’arrange. Tu connais beaucoup de monde qui fait de l’open source dont il se contrefout ? Personnellement, j’aurais pas confiance, et je m’attendrais à du travail bâclé.

    Par contre, ce qu’il faut voir, c’est que les trucs qui les arrangent, ils auraient pu les faire en closed source (comme ils faisaient avant), et que maintenant ils le font en open source. Si ce n’est pas une évolution positive, je ne sais pas ce qu’il te faut.

    (et dans la liste des trucs « égoïstes » qu’ils font en Open Source, tu peux ajouter la compatibilité Windows à Docker, leur moteur Javascript Chakra, Tyepscript, de gros morceaux de .Net dont le développement de ASP.NET 5 en mode communautaire, CNTK & DMTK, GSL, Bond, TouchDevelop, F#, rDSN, Pyjion, Ace, Thrifty, WinJS, Nuget, RxJs, Z3, RxCpp, Rx.Net, Thali, et bien d’autres)

  • [^] # Re: Dommage

    Posté par  . En réponse au journal Vive la navigation anonyme !. Évalué à 9.

  • [^] # Re: Traduction faite

    Posté par  . En réponse au journal Comment devenir programmeur. Évalué à 3. Dernière modification le 26 mars 2016 à 12:31.

    Déjà qu'il faut traduire le métier et les termes du client, pourquoi s'emmerder comme des cons avec de l'anglais qu'on ne maîtrise pas ?!

    Parce que tout le code purement technique (non métier) a d’énorme chance d’être en anglais (serverConnection, fileHandler, jsonParser,…), et que se retrouver avec un mélange de termes anglais et français, c’est assez atroce.

    À ma connaissance il n’y a aucun métier spécifique à la francophonie, donc normalement en ouvrant un dictionnaire tu devrais pouvoir trouver des traductions propres pour ton vocabulaire métier. Et en faire un glossaire. Ce qui au final clarifiera probablement les choses relativement à une situation « vu qu’on est fait en français pas besoin d’un glossaire » pour se retrouver avec 5 développeurs qui ont compris et utilisent les termes métiers de manière subtilement différente (mais en français donc c’est plus clair, n’est-ce-pas ?)

  • [^] # Re: Pour quel coût ?

    Posté par  . En réponse au journal L'increvable. Évalué à 3.

    Pour résoudre ce conflit permanent et inhérent qu’il y a entre soi et le monde extérieur, le commentaire imbécile ne peut plus considérer l’autre comme d’égal à égal : on admettra pas qu’une opinion différente de la sienne puisse se construire sur des bases rationnelles, intelligente et il faudra nécessairement s’occuper de s’auto-persuader qu’elle est le produit d’un “moins-que-soi”.

    Histoire d’être explicite : considérer l’autre comme étant un moins que soi, c’est par exemple le considérer comme un « autiste » incapable de comprendre le concept de témoignage, inférieur à des enfants en bas âge sur sa capacité à « savoir distinguer le monde extérieur, les autres, de soi-même », dénué de la capacité culturelle de base de comprendre l’implicite ?

  • [^] # Re: Boaf pas pour le moment

    Posté par  . En réponse au journal Déchéance du Bitcoin. Évalué à 4.

    Comme toi j'ai super-peur du gouvernement, alors je préfère utiliser un outil de mafieux

    Le FBI est tout à fait d’accord avec toi : il faut vraiment avoir mauvaise conscience pour utiliser des outils de criminels comme la cryptographie.

  • [^] # Re: Pourquoi pas ? Parce queeeeeee !

    Posté par  . En réponse à la dépêche Swift sous GNU/Linux - Introduction. Évalué à 10. Dernière modification le 11 mars 2016 à 09:12.

    que le monde linux arrete de se branler avec 20 frameworks UI

    Mais de quoi parles-tu ? Tu as deux gros frameworks, Qt et Gtk. Et encore, Qt c’est plus « multiplateforme » que « monde Linux ». Le reste est quantité négligeable — et si tu veux compter les quantités négligeables, les autres OS ont autant voire plus de frameworks UI secondaires à la con utilisés par deux projets (d’autant plus qu’énormément des frameworks secondaires sont multiplateformes). Et tu n’as pas à tout supporter. Tu as juste à en choisir un.

    Ça me fait penser à ceux qui ressortent sans cesse cette image pour dire « le son sous Linux c’est le bordel », en passant sous silence que les 3/4 des trucs cités là dedans sont des libs/serveurs de sons portables qui existent ailleurs, et que ailleurs aussi tu as généralement plusieurs API pour accéder au son (sous Windows par exemple tu as à minima DirectAudio et l’API legacy des MFC).

    qui sont un enfer a deployer

    Ha oui apt-get install libqt4 c’est vraiment un enfer de complexité de déploiement.

  • [^] # Re: Backup => il y a de l'idée

    Posté par  . En réponse au journal Comment Github a ressuscité mon logiciel libre. Évalué à 2.

    Ça reste néanmoins une « super idée », personnellement je m’en sers autant que possible (je m’en suis servi par exemple pour protéger l’accès à l’espace d’administration d’un site SPIP).

    Tu m’intéresses. Comment tu fais en PHP pour accéder au certificat et au résultat de la validation ? La dernière fois que j’ai regardé, yavait strictement rien un tant soi peu normalisé pour ça, fallait le faire à la main à coups de fascgi_param TLS_CLIENT_CERT $ssl_client_cert avec nginx.

  • [^] # Re: Quelques règles de base pour vos mots de passe

    Posté par  . En réponse à la dépêche Linux Mint a été compromise. Évalué à 7.

    s'il y a beaucoup plus de bits d'entropie que le premier, il n'est pas forcément plus difficile à casser

    Ben si, de par la définition d’un bit : la quantité d’information nécessaire pour diviser le nombre de possibilités par deux. Autrement dit, si un schéma a n bits d’entropie, par définition ça signifie qu’il faut tester environ 2^n possibilités pour le deviner (plus précisément, il faut tester 2^n possibilités pour avoir 100% de chance de le deviner, 2^{n-1} possibilités pour avoir 50% de chances de le deviner, 2^{n-2} possibilités pour avoir 25% de chance de le deviner…)

    4 mots tirés d’un dictionnaire de 3000 mots, c’est 3000⁴=81 téra-possibilités (téra=10¹²). C’est bien plus (environ un million de fois plus) que les 2**16 * 2 * 2 * 2**3 * 2**4 * 2**3 = 2**28 = 268 méga-possibilités (10⁶) offertes par le premier.

    Le problème de ce XKCD c’est qu’il ne présente pas l’alternative qui est une chaîne générée aléatoirement (au lieu de partir d’un mot de base). En se limitant à [a-zA-Z0-9], pour obtenir les 46 bits d’information équivalents, il suffit de 8 caractères. 7 si tu inclus les caractères spéciaux. Perso j’ai pas tellement plus de difficultés à retenir (sur le long terme) 8 caractères plutôt que 4 mots. Et c’est plus court à taper.

  • [^] # Re: Exemple de cas d'utilisation réel : emails

    Posté par  . En réponse au journal cas d'utilisation de GPG. Évalué à 9. Dernière modification le 06 mars 2016 à 18:52.

    Le fantasme c’est surtout de croire que le seul scénario d’attaque envisageable c’est la NSA, et prétendre que si on est pas une cible de la NSA on a pas besoin de sécurité.

    Pour moi le scénario n°1 en sécurité, en terme d’impact, c’est mitiger les « oups ». « Oups, après remplacement notre ancien serveur de backup a été revendu/recyclé/refilé sans que les données aient été effacées ». « Oups la règle qui fermait SSH sur le serveur de prod a sauté, et on y a pas mis de fail2ban ». « Oups le stagiaire de la DSI a ouvert un mail vérolé… sur la session admin ».

  • [^] # Re: Version 0.x.x

    Posté par  . En réponse à la dépêche Et si JavaScript allait droit dans le mur ?. Évalué à 10.

    Quitte à jouer à « même ce langage était peu connu et éprouvé à une époque », on peut évoquer… javascript, longtemps considéré comme un jouet pour faire des trucs genre « Entrez votre nom » « Bonjour "nom" » sur un site perso, et son utilisation côté serveur non seulement impossible mais impensable.

    Le mainstream de demain c’est le jouet d’aujourd’hui, même si tout jouet d’aujourd’hui ne sera pas un mainstream demain. Le jeu c’est justement d’avoir le flair pour trouver lequel ;)

  • [^] # Re: BTRFS

    Posté par  . En réponse à la dépêche ZFS, Canonical et GPL. Évalué à 2.

    La sortie de btrfs send, c’est une liste d’opérations génériques (créer fichier, supprimer fichier, changer permissions, changer contenu). Tu peux donc le restaurer sur n’importe quel système de fichiers btrfs. Dans l’absolu tu pourrais même écrire un outil pour le restaurer sur une partition ext4/NTFS/whatever, mais à ma connaissance personne ne s’est fatigué à le faire.

  • [^] # Re: BTRFS

    Posté par  . En réponse à la dépêche ZFS, Canonical et GPL. Évalué à 9.

    Tu fais un snapshot en read only de la partition que tu veux sauvegarder (par exemple /home) :

    btrfs subvolume snapshot -r /home /home/.snapshots/$(date +"%Y%m%dT%H%M%S")

    Tu peux ensuite en faire ce que tu veux, par exemple l’envoyer en SSH sur un serveur distant :

    btrfs send /home/.snapshots/$date | gzip | ssh backups@srv-backup "cat > $date.gz"

    Tu peux même faire du backup incrémental :

    btrfs send -p /home/.snapshots/$previous /home/.snapshots/$date | gzip | ssh backups@srv-backup "cat > $previous-to-$date.gz"

    Pour restaurer, c’est un poil plus technique, mais rien d’insurmontable :

    cd /home
    mkdir .snapshots
    cd .snapshots
    ssh backups@srv-backup "cat $lastfull.gz $lastfull-to-${inc1}.gz ${inc1}-to-${inc2}.gz" | zcat | btrfs receive .
    
    # A partir de là on a récupéré le dernier snapshot en mode lecture seule.
    # On peut faire un gros copier bourrin cp -a /home/.snapshots/${inc2}/{*,.*} /home,
    # ou alors on peut faire ça plus finement et ordonner à btrfs d’utiliser
    # le dernier snapshot pour /home :
    
    # Faire une copie du snapshot à restaurer en mode lecture-écriture
    # (les snapshots récupéres par btrfs receive sont toujours en read-only
    btrfs subvolume snapshot ${inc2} last-rw
    
    # On récupère l’id de last-rw
    id=$(btrfs subvolume list /home | awk '/\/last-rw$/{print $2}')
    
    # On change le snapshot utilisé par /home, et on remonte
    btrfs subvolume set-default $id /home
    cd /; umount /home; mount /home
  • [^] # Re: C'était mieux avant

    Posté par  . En réponse au journal Installer un serveur Firefox Accounts et Firefox Sync. Évalué à 5. Dernière modification le 24 février 2016 à 20:18.

    bower est marqué en pré-requis dans ce journal c'est donc un nième outil à installer.

    Comme il pourrait être en prérequis d’un projet en PHP. Encore une fois, rien à voir avec la plateforme.

    mais va assurer sa propre mise à jour de manière autonome…

    Pas nécessairement : seulement si les devs prennent la peine de fournir une version pré-empaquetée. Exactement comme en node donc…

    Non, je ne vois toujours pas de rapport entre le nombre d'utilisateurs et les risques de sécurité

    J’ai parlé de « millions d’utilisateur » pour une chose : indiquer que c’est quelque chose de testé, y compris en production et à large échelle.

    Les récents événements ont montré que même les librairies les plus utilisées ne sont pas exemptes de bugs/failles depuis des années

    Ça tombe bien, personne n’a prétendu ça.

    Maintenant, faisons simple. Tu prends 200 développeurs de tous niveaux. Aux cent premiers, tu leur fait coder un CMS où ils doivent faire toutes leurs requêtes SQL à la main. Au cent autres, tu leur fait coder un CMS avec obligation d’utiliser un ORM. À ton avis, quel groupe aura statistiquement le plus d’injections SQL ? Petit indice : le groupe 2 en aura 0. Ça veut pas dire que ce sont des meilleurs codeurs, et qu’ils n’introduiront aucun bug ni aucune faille. Mais au moins il ne tomberont pas dans ce piège bien précis. Ajoute à cette image un système de template qui échappe les variables par défaut (en opposition à coder à coups de <?php echo $row["user_comment"] ?>), un système de routage qui évite les pièges genre <?php include $_GET['module']."/".$_GET['page']; ?>, et tu te trouveras certes avec 150.000 dépendances, mais un code vachement plus sûr (et non, je n’ai pas dit à 100% sûr).

    Je te rejoins sur un truc : ce qui fait la sécurité, c’est la qualité du code. Et la qualité du code, elle passe par des bonnes pratiques, qui incluent :

    • Factorisation et réutilisation du code: utilisation de librairies externes éprouvées tant que possible.
    • Automatisation maximale (tests, génération de code, gestions des asset). Le « bower » dont tu te plains.

    Alors oui, dans la qualité du code il n’y a pas que ça (loin de là), mais ce dont tu te plains (150.000 dépendances, outillage lourd) sont deux aspects très important de la qualité du code. D’où le fait que je réagisse assez violemment à ta remarque « ah, de mon temps, on avait pas à s’encombrer de tout ça, pas de dépendances, on faisait nos requêtes SQL avec amour » (oui, je caricature ;)). Ce bon vieux temps, c’est aussi un bon vieux temps où on voyait passer dans les CVE des dizaines de SQL injection par semaine sur une base de code totale (beaucoup !) moins large. Ce qui a endigué l’épidémie de SQL injection (et je suis optimiste. Disons, vaguement contenu, vu qu’il y a encore beaucoup de projets dans la nature en mode « YOLO les ORM c’est pour les noobs »), c’est pas un coup de baguette magique qui a rendu les devs plus intelligent, c’est l’exemple de Rails et les émules qu’il a fait dans le monde PHP.

    rails : qui se vantait d'une protection native des sql injections et s'en est mangé une monstrueuse il y a 2 ans…

    C’est un excellent exemple que tu nous sors là. Déjà, ce n’est pas une injection SQL à proprement parler (tu ne peux pas injecter de commande SQL arbitraire). Je te refais la faille en PHP :

    Le formulaire :

    Nom: <input name="user[name]"><br>
    Adresse email: <input name="user[email]">
    <input type="submit"/>

    Gestion du formulaire :

    $user = User::findOne($_SESSION["userid"]);
    foreach($_POST["user"] as $attr => $val) {
        $user->set($attr, $val); // ici $attr et $val sont correctement échappés : pas d’injection SQL
    }
    $user->validate();
    $user->save();

    La faille ? Simple, l’utilisateur ayant le contrôle des entrées, il peut très bien envoyer en données POST user[is_admin] = 1.

    Pourquoi c’est un exemple intéressant ? Parce qu’on a là des développeurs expérimentés, qui savent ce qu’est qu’une injection SQL, qui sont tombés le panneau. Je vais te faire une confession : j’ai un jour, comme beaucoup, succombé au syndrome NIH. J’ai fait un rails-like dans mon langage favori (Objective-C. On a tous nos perversions inavouables). Devine quoi ? Quand la faille pour rails a été révélée, j’étais bien évidemment tombé dans le même panneau. En quoi cette remarque est pertinente sur ce qui nous intéresse ? Après tout, tu vas me dire : le truc fait à la main a la faille, le framework connu a la faille, 1 partout balle au centre.

    Sauf que cette histoire a deux ans. Presque tout le monde l’a oubliée. Contrairement aux SQL injections qui sont martelées à la tête de tous les développeurs (ce qui n’empêche pas certains de continuer à en introduire régulièrement, parce que les ORM c’est trop usine à gaz…), le détail de cette faille n’est connu presque de personne.

    Un dev qui partira sur Rails ne sera pas affecté. L’erreur a été corrigée. Lesson learned, comme disent les anglais. Par contre, un wanabee « moi j’aime pas les dépendances, je vais tout refaire à la main », je te fiche mon billet qu’il a plus (bien plus !) d’une chance sur deux de retomber dans ce panneau.

    Les devs de framework ne sont pas des dieux qui codent mieux que toi, mais ils ont généralement fait les erreurs que tu vas faire avant que tu ne les aies faites. Et les ont corrigées avant que tu les fasses. Et celles qu’ils n’ont pas encore faites mais qu’ils vont faire, ben tu vas les faire aussi. Profite de leur expérience.

  • [^] # Re: C'était mieux avant

    Posté par  . En réponse au journal Installer un serveur Firefox Accounts et Firefox Sync. Évalué à 4.

    Tu te rends compte que pour exposer ce service REST, je dois me manger git/node/bower et pour chacun d'eux peut-être des dépendances supplémentaires qu'il va falloir que je gère sur le long terme

    Tout ça n’a rien à voir avec PHP vs node. Tu peux très bien faire un .tar d’une appli node, tout comme tu peux déployer une appli PHP avec git+composer (et pour info, bower a encore moins à voir avec la choucroute, c’est pour le frontend, et c’est aussi utilisé dans des projets faits en PHP). Faudra m’expliquer la différence fondamentale entre https://github.com/symfony/symfony/blob/master/composer.json et https://github.com/expressjs/express/blob/master/package.json pour appeler l’un usine à gaz et pas l’autre.

    Ce dont tu te plains c’est jusque que les devs d’applications node s’embêtent plus rarement que les devs d’application PHP à fournir une archive prépackagée. Alors je peux comprendre que ce soit légèrement irritant pour certains (perso j’ai du mal à voir en quoi git clone && npm install est tellement plus pénible que tar xzf, mais admettons…), mais de là à en faire un point bloquant, ça me dépasse…

    Au passage, je ne vois pas le rapport entre réinventer la roue et les trous de sécurité.

    Tu vois sincèrement pas en quoi un projet qui utilise un ORM connu et largement testé comme Doctrine aura beaucoup moins de chances d’avoir des SQL injections qu’un projet qui décide de faire toutes ses requêtes SQL à la main parce que « je veux pas embarquer 150.000 dépendances » ?

    De trous de sécurité, il y en a partout même sur une bibliothèque un peu utilisée.

    Je n’ai jamais prétendu que l’utilisation de librairie externes garantissait l’absence de failles.