Overview
Comment: | Sécurité: vérification de la clé PGP avant d'enregistrer |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | dev |
Files: | files | file ages | folders |
SHA1: |
36fa9933868998db78001237de336cef |
User & Date: | bohwaz on 2017-02-21 03:55:23 |
Other Links: | branch diff | manifest | tags |
Context
2017-02-21
| ||
03:57 | Sécurité: vérifier que GPG est dispo avant d'enregistrer une clé check-in: 23165737ae user: bohwaz tags: dev | |
03:55 | Sécurité: vérification de la clé PGP avant d'enregistrer check-in: 36fa993386 user: bohwaz tags: dev | |
2017-02-17
| ||
04:31 | Sécurité: obligation de confirmer activation OTP, ajout clef PGP pour chiffrement mails sortants, déplacement infos sécurité dans une page à part check-in: 71857e5680 user: bohwaz tags: dev | |
Changes
Modified src/include/lib/Garradin/Membres.php from [4506047015] to [fab06377a8].
︙ | ︙ | |||
613 614 615 616 617 618 619 | { unset($data['passe']); } if (isset($data['clef_pgp'])) { $data['clef_pgp'] = trim($data['clef_pgp']); | | > | > > > > | > > > > > > > > > > > > > | 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 | { unset($data['passe']); } if (isset($data['clef_pgp'])) { $data['clef_pgp'] = trim($data['clef_pgp']); if (!\KD2\Security::getEncryptionKeyFingerprint($data['clef_pgp'])) { throw new UserException('Clé PGP invalide : impossible d\'extraire l\'empreinte.'); } } DB::getInstance()->simpleUpdate('membres', $data, 'id = '.(int)$user['id']); $this->updateSessionData(); return true; } public function getPGPFingerprint($key, $display = false) { $fingerprint = \KD2\Security::getEncryptionKeyFingerprint($key); if ($display && $fingerprint) { $fingerprint = str_split($fingerprint, 4); $fingerprint = implode(' ', $fingerprint); } return $fingerprint; } public function get($id) { $db = DB::getInstance(); $config = Config::getInstance(); return $db->simpleQuerySingle('SELECT *, |
︙ | ︙ |
Modified src/templates/admin/mes_infos_securite.tpl from [b578d4e8a9] to [e84094ff01].
︙ | ︙ | |||
109 110 111 112 113 114 115 | <legend>Protéger mes mails personnels par chiffrement PGP/GnuPG</legend> <dl> <dt><label for="f_clef_pgp">Ma clé publique PGP</label></dt> <dd class="help">En inscrivant ici votre clé publique, tous les emails personnels (non collectifs) qui vous sont envoyés seront chiffrés (cryptés) avec cette clé : messages envoyés par les membres, rappels de cotisation, procédure de récupération de mot de passe, etc.</dd> <dd><textarea name="clef_pgp" id="f_clef_pgp" cols="90" rows="5">{form_field name="clef_pgp" data=$user}</textarea></dd> | | | 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | <legend>Protéger mes mails personnels par chiffrement PGP/GnuPG</legend> <dl> <dt><label for="f_clef_pgp">Ma clé publique PGP</label></dt> <dd class="help">En inscrivant ici votre clé publique, tous les emails personnels (non collectifs) qui vous sont envoyés seront chiffrés (cryptés) avec cette clé : messages envoyés par les membres, rappels de cotisation, procédure de récupération de mot de passe, etc.</dd> <dd><textarea name="clef_pgp" id="f_clef_pgp" cols="90" rows="5">{form_field name="clef_pgp" data=$user}</textarea></dd> {if $clef_pgp_fingerprint}<dd class="help">L'empreinte de la clé est : <code>{$clef_pgp_fingerprint}</code></dd>{/if} </dl> <p class="alert"> Attention : en inscrivant ici votre clé PGP, les emails de récupération de mot de passe perdu vous seront envoyés chiffrés et ne pourront être lus sans utiliser le mot de passe protégeant votre clé privée correspondante. </p> </fieldset> {/if} |
︙ | ︙ |
Modified src/www/admin/mes_infos_securite.php from [89a6bd6a26] to [a0932f5a86].
︙ | ︙ | |||
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } elseif (Utils::post('passe') != Utils::post('repasse')) { $error = 'La vérification ne correspond pas au mot de passe.'; } else { $confirm = true; } } $tpl->assign('error', $error); $tpl->assign('confirm', $confirm); if (Utils::post('otp') == 'generate') { $otp = $membres->getNewOTPSecret(); $tpl->assign('otp', $otp); } | > > > > > | > > > > > > > > > > > | | 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } elseif (Utils::post('passe') != Utils::post('repasse')) { $error = 'La vérification ne correspond pas au mot de passe.'; } elseif (Utils::post('clef_pgp') && !$membres->getPGPFingerprint(Utils::post('clef_pgp'))) { $error = 'Clé PGP invalide : impossible de récupérer l\'empreinte de la clé.'; } else { $confirm = true; } } $tpl->assign('error', $error); $tpl->assign('confirm', $confirm); if (Utils::post('otp') == 'generate') { $otp = $membres->getNewOTPSecret(); $tpl->assign('otp', $otp); } else { $tpl->assign('otp', false); } $tpl->assign('pgp_disponible', \KD2\Security::canUseEncryption()); $fingerprint = ''; if ($membre['clef_pgp']) { $fingerprint = $membres->getPGPFingerprint($membre['clef_pgp'], true); } $tpl->assign('clef_pgp_fingerprint', $fingerprint); $tpl->assign('passphrase', Utils::suggestPassword()); $tpl->assign('champs', $config->get('champs_membres')->getAll()); $tpl->assign('membre', $membre); $tpl->display('admin/mes_infos_securite.tpl'); |