3 MAJ avec reboot obligatoire.
Les serveurs infogérés sont traités cette nuit.
3 MAJ avec reboot obligatoire.
Les serveurs infogérés sont traités cette nuit.
La formule de Lhun permet de vérifier un numéro de carte bleue, un siret, un siren, … tellement utile pour les contrôles de formulaire que je me suis penché sur la question ne trouvant rien de probant sur Internet.
La partie front :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="luhn.aspx.cs" Inherits="luhn" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <span id="spanResult" runat="server"></span> <form> Numéro à vérifier : <input type="text" name="numberToVerify" value="<%=numberToVerify %>" /> <input type="submit" name="mem" value="vérifier" /> </form> </body> </html> |
Juste un formulaire pour envoyer le chiffre, rien de bien palpitant 🙂
La partie programmée :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Text; using System.Text.RegularExpressions; public partial class luhn : System.Web.UI.Page { public string numberToVerify = ""; public int ttlAddition = 0, cpt = 1; public StringBuilder sb = new StringBuilder(); protected void Page_Load(object sender, EventArgs e) { numberToVerify = Request["numberToVerify"] ?? ""; if (numberToVerify != "") { string formatInput = Regex.Replace(numberToVerify, "[^a-zA-Z0-9_]+", "", RegexOptions.Compiled); string reverseCard = new string(formatInput.ToCharArray().Reverse().ToArray()); int[] arrDigits = Array.ConvertAll<string, int>( System.Text.RegularExpressions.Regex.Split(reverseCard.ToString(), @"(?!^)(?!$)"), str => int.Parse(str) ); int[] arrMult = new int[arrDigits.Length]; // première étape de Luhn : On démarre avec le dernier chiffre (à droite) et on se déplace vers la gauche, en doublant la valeur de tous les chiffres de rang pair for (int i = 0; i < arrDigits.Length; i++) { if (cpt == 1) arrMult[i] = arrDigits[i]; // la clé est traitée en 1er, le chiffre n'est pas doublé else { if (cpt % 2 == 0) arrMult[i] = 2 * arrDigits[i]; else arrMult[i] = arrDigits[i]; } cpt++; } // On additionne ensemble tous les chiffres de chaque nombre ainsi obtenu, si chiffre > 10 alors chiffre à additionner donne par ex : 18 = 1 + 8 for (int i = 0; i < arrMult.Length; i++) { if ((int)arrMult[i] >= 10) // si chiffre > 9 il faut re décomposer le chiffre, ex 18 donne : 1+8 { int[] intList = Array.ConvertAll<string, int>( System.Text.RegularExpressions.Regex.Split(arrMult[i].ToString(), @"(?!^)(?!$)"), str => int.Parse(str) ); for (int j = 0; j < intList.Count(); j++) { ttlAddition += (int)intList[j]; } } else ttlAddition += (int)arrMult[i]; } // si modulo par 10 de l'addition est nul alors notre chiffre est valide if (ttlAddition % 10 == 0) spanResult.InnerHtml = "Vérification OK"; else spanResult.InnerHtml = "Vérification Fausse"; } } } |
Quelques remarques :
Quelques liens utiles :
https://fr.wikipedia.org/wiki/Formule_de_Luhn
https://portal.hardis-group.com/pages/viewpage.action?pageId=120357227
Une petite méthode simple et rapide pour compter le nombre d’occurrences identiques dans un array multi dimensionnel :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var locs = [ { "id": 1, "text": "Dire Straits", "famille": "rock fm" }, { "id": 2, "text": "Simple Minds", "famille": "new wave" }, { "id": 3, "text": "The Cure", "famille": "new wave" }, ]; var numOccurences = 0; var search = "new wave"; // ce que l'on cherche $(document).ready(function () { numOccurences = $.grep(locs, function (pdt) { return pdt.famille === search; }).length; console.log("Nombre d'occurences de " + search + " = " + numOccurences); }); |
Retourne :
Nombre d’occurrences de new wave = 2
CQFD 🙂
3 MAJ avec reboot obligatoire.
Les serveurs infogérés sont traités cette nuit.
De nombreux supports arrivent nous indiquant que le HTTPS ne fonctionne pas et qu’il nous faut mettre à jour le certificat. Cependant, le problème est bien plus complexe et ne dépend pas de notre volonté.
En effet, la vérification d’un certificat est un processus où l’ont remonte une chaine de confiance. Nous livrons un certificat lui même pointant vers un autre certificat d’une plus haute autorité et cela jusqu’à une autorité que le client (Edge, Mozilla, Firefox, Safari, Openssl, etc) saura reconnaitre comme de confiance.
Il faut noter que le client, s’il n’est pas mis à jour ne sera pas à jour des certificats de confiance et ne pourra donc pas identifier les certificats plus « modernes ».
Or, les certificats let’s encrypt pointent vers plusieurs certificats root dont l’un d’eux est obsolète à la date du 30 septembre 2021. Voici une explication de letsencrypt.org eux même :
https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/
letsencrypt.org nous informe qu’il faut mettre à jour les clients vers une version supportée où alors une alerte de sécurité sera émise par le client. Cela n’est pas un problème pour l’absolue majorité des clients qui tiennent leurs machines et systèmes à jour mais le devient si on utilise de vieux appareils, voici la liste de compatibilité :
https://letsencrypt.org/docs/certificate-compatibility/
Nous invitons tous nos partenaires à mettre à jour leurs systèmes, cela est d’autant plus important qu’ils s’exposent à des risque de sécurité important s’ils utilisent des outils et navigateurs obsolètes !
Bonjour,
Ce petit tutoriel a pour vocation de configurer les crons WordPress manuellement afin d’éviter leur empilement qui peut être du à plusieurs problèmes dont des modifications au niveau des timezones ou tout simplement le code de WordPress qui n’est pas « thread-safe ».
La première étape consiste à supprimer l’automatisation de ce cron dans le fichier wp-config.php
1 |
define('DISABLE_WP_CRON', true); |
L’étape suivante consiste à créer un cron pour l’url dans notre console d’infogérance RD serveur pour lancer automatiquement le cron par URL à la fréquence souhaitée (attention à ne pas lancer le cron par fichier).
1 |
http://monsite.com/wp-cron.php?doing_wp_cron |
Salutations,
Nous profitons de l’actualité pour faire un rappel en matière de cybersécurité.
Tout d’abord, Pegasus n’invente rien en matière de cyberattaque, tout ce que fait Pegasus existe déjà et cela depuis l’aube de l’internet, expliquons :
Cependant, Il faut être rassurant, les attaques zéro-day coûtent très cher. Les failles se négocient parfois pour plusieurs millions et une simple attaque peut coûter des dizaines de milliers d’euros. Vos données en valent-elles ce prix ? Pour un site standard, il est beaucoup plus probable, et certain, de faire face à des attaques concernant des bugs connus et pour lesquelles il suffit d’être à jour.
Dès l’instant où une machine est connectée à internet, la cybersécurité ne repose pas sur l’établissement d’un verrou inviolable – car impossible – mais sur des comportements réduisant les risques et les données volées. L’effort fourni par les parties concernées doit être proportionnel à la valeur des données à protéger. Concernant le détenteur d’un hébergement, nous attendons de celui-ci qu’il respecte des règles élémentaires :
Enfin, il est important d’avoir conscience qu’un site internet vieillit et périme ! Afin d’éviter cela, il vous faut le mettre à jour régulièrement : au moins une fois par an.
Chez RDmédias, la sécurité de nos clients est importante ainsi chaque hébergement est à minima :
Une MAJ importante de sécurité avec reboot obligatoire est à effectuer sur vos Windows.
Tous les serveurs infogérés seront traités cette nuit par nos services.
Pour tester la sécurisation de votre site vous pouvez utiliser ce site :
https://www.ssllabs.com/ssltest/
Afin que vos résultats soient privés, veuillez cocher la case « Do not show the results on the boards » .
Une explication du Rating ce trouve ici (anglais) :
https://github.com/ssllabs/research/wiki/SSL-Server-Rating-Guide
Ce qui dépend de votre IIS sera principalement les « protocoles » et les « ciphers ».
Un outil permet de configurer cela simplement (download > gui) :
https://www.nartac.com/Products/IISCrypto/
Concernant les protocoles,
Seul TLS 1.2 et 1.3 ne sont pas obsolètes.
Il est à noter que IIS ne supporte pas TLS 1.3.
Concernant les ciphers,
Diffie-Hellman est obsolète.
Une configuration correcte en 1.2 est la suivante :
Pour obtenir la note de A+, il faudra un certificat en RSA 4096 bits ou plus.
Les certificats « Let’s Encrypt » sont par défaut en RSA 2048 bits ou RSA 3072 bits ce qui limite la note de la clef respectivement à 80% ou 90%.
Plus la clef est grande plus le protocole HTTPS en sera ralenti. Ce qui est gagné en « sécurité » est perdu en rapidité.
Pour obtenir du TLS 1.3 tout en gardant votre site Asp sur du IIS, nous proposons des serveurs de reverse proxy sous Ubuntu + Apache.
Trois MAJ importantes avec reboot obligatoires sont à effectuées sur vos Windows.
Tous les serveurs infogérés seront traités cette nuit par nos services.