Overview
Comment: | Ajout vérification de mot de passe compromis avec l'API HaveIBeenPwned, et mot de passe minimum de 10 caractères au lieu de 8 |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
08954e712ceeeb83d5906725b108bc56 |
User & Date: | bohwaz on 2019-12-03 17:40:32 |
Other Links: | manifest | tags |
Context
2019-12-03
| ||
17:45 | Amélioration fichiers .htaccess pour l'hébergement mutualisé check-in: 72097b2839 user: bohwaz tags: trunk | |
17:40 | Ajout vérification de mot de passe compromis avec l'API HaveIBeenPwned, et mot de passe minimum de 10 caractères au lieu de 8 check-in: 08954e712c user: bohwaz tags: trunk | |
2019-12-01
| ||
20:04 | Uniformisation de la position des actions à droite des tableaux, ajout d'une action pour voir les détails de l'écriture check-in: be5b3d5ef5 user: bohwaz tags: trunk | |
Changes
Modified src/include/data/schema.sql from [efe750515a] to [c8df01c2dd].
︙ | |||
394 395 396 397 398 399 400 | 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 | + + + + + + + + + + + + + + | id_membre INTEGER NULL REFERENCES membres (id) ON DELETE CASCADE, -- Si non NULL, alors la recherche ne sera visible que par le membre associé intitule TEXT NOT NULL, creation TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP CHECK (datetime(creation) IS NOT NULL AND datetime(creation) = creation), cible TEXT NOT NULL, -- "membres" ou "compta_journal" type TEXT NOT NULL, -- "json" ou "sql" contenu TEXT NOT NULL ); CREATE TABLE IF NOT EXISTS compromised_passwords_cache -- Cache des hash de mots de passe compromis ( hash TEXT NOT NULL PRIMARY KEY ); CREATE TABLE IF NOT EXISTS compromised_passwords_cache_ranges -- Cache des préfixes de mots de passe compromis ( prefix TEXT NOT NULL PRIMARY KEY, date INTEGER NOT NULL ); |
Modified src/include/lib/Garradin/Membres.php from [84b4e80ec3] to [25c189b224].
︙ | |||
11 12 13 14 15 16 17 | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | - - - - - - - - - - - - - - - - - - - - - - - - - | const DROIT_AUCUN = 0; const DROIT_ACCES = 1; const DROIT_ECRITURE = 2; const DROIT_ADMIN = 9; const ITEMS_PER_PAGE = 50; |
︙ | |||
171 172 173 174 175 176 177 | 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | + - + | if (isset($data[$id]) && $db->test('membres', $id . ' = ? COLLATE NOCASE', $data[$id])) { throw new UserException('La valeur du champ '.$id.' est déjà utilisée par un autre membre, hors ce champ doit être unique à chaque membre.'); } if (isset($data['passe']) && trim($data['passe']) != '') { Session::checkPasswordValidity($data['passe']); |
︙ | |||
226 227 228 229 230 231 232 | 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 | + - + | { throw new UserException('Ce numéro est déjà attribué à un autre membre.'); } } if (!empty($data['passe']) && trim($data['passe'])) { Session::checkPasswordValidity($data['passe']); |
︙ |
Modified src/include/lib/Garradin/Membres/Session.php from [b3c77f939b] to [13db0ba2f7].
︙ | |||
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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 | + - + + + + + + + + + + + + + + + + | use const Garradin\SECRET_KEY; use const Garradin\WWW_URL; use const Garradin\ADMIN_URL; use KD2\Security; use KD2\Security_OTP; use KD2\QRCode; use KD2\HTTP; class Session extends \KD2\UserSession { // Personalisation de la config de UserSession protected $cookie_name = 'gdin'; protected $remember_me_cookie_name = 'gdinp'; protected $remember_me_expiry = '+3 months'; |
︙ | |||
145 146 147 148 149 150 151 | 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 | - + | if (Security_OTP::TOTP($secret, $code)) { return true; } // Vérifier encore, mais avec le temps NTP // au cas où l'horloge du serveur n'est pas à l'heure |
︙ | |||
261 262 263 264 265 266 267 | 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 | - - + + - - - - + | $password_confirm = trim($password_confirm); if (!hash_equals($password, $password_confirm)) { throw new UserException('Le mot de passe et sa vérification ne sont pas identiques.'); } |
︙ | |||
348 349 350 351 352 353 354 | 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 | - - - - - + + + + + - | { throw new \RuntimeException(sprintf('Le champ %s n\'est pas autorisé dans cette méthode.', $key)); } } if (isset($data['passe']) && trim($data['passe']) !== '') { |
︙ |
Modified src/www/admin/static/scripts/password.js from [c16716738c] to [ae6eb9a86f].
︙ | |||
21 22 23 24 25 26 27 | 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | - + - + | this.select(); checkPasswordStrength(); checkPasswordMatch(); }; strength_elm = document.createElement('span'); strength_elm.className = 'password_check'; |
︙ | |||
88 89 90 91 92 93 94 | 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | - + | if (v[j].length < 4) continue; var r = new RegExp(RegExp.quote(v[j]), 'ig'); score -= pass.match(r) ? pass.match(r).length * 5 : 0; } } |
︙ | |||
148 149 150 151 152 153 154 | 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | - + | { strength_elm.className = strength_elm.className.split(' ')[0] + ' weak'; strength_elm.innerHTML = 'Sécurité : <b>mauvaise</b>'; } else { strength_elm.className = strength_elm.className.split(' ')[0] + ' fail'; |
︙ |
Modified src/www/admin/upgrade.php from [9e3246c1b7] to [1719a77790].
︙ | |||
260 261 262 263 264 265 266 267 268 269 270 271 272 273 | 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 | + + + + + + + + | $db->exec('INSERT INTO "compta_categories" VALUES(NULL,-1,\'Licences fédérales\',\'Licences payées pour les adhérents (par exemple fédération sportive etc.)\',\'652\');'); $db->import(ROOT . '/include/data/0.9.1.sql'); $db->commit(); } if (version_compare($v, '0.9.5', '<')) { $db->begin(); // Créer les tables manquantes $db->import(ROOT . '/include/data/schema.sql'); $db->commit(); } Utils::clearCaches(); $config->setVersion(garradin_version()); Static_Cache::remove('upgrade'); |
︙ |