パスワードポリシーについてご教示ください。

パスワードポリシーについてご教示ください。

- koooootaro mooooodle の投稿
返信数: 2

いつもお世話になっております。

デフォルトにあるいくつかのパスワードポリシー以外にポリシーを増やすことはできますか。

連続する文字の使用を禁止したいと考えています。(例:12345, abcdeなど)

※moodle3.8.3を使用しています。

よろしくお願いいたします。

koooootaro mooooodle への返信

Re: パスワードポリシーについてご教示ください。

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

以下のプログラム修正ではいかがでしょうか。

修正対象プログラム:
lib/moodlelib.php

修正箇所:
5029行目

[ 修正前 ]
function check_password_policy($password, &$errmsg, $user = null) {
    global $CFG;

    if (!empty($CFG->passwordpolicy)) {
        $errmsg = '';
        if (core_text::strlen($password) < $CFG->minpasswordlength) {
            $errmsg .= '<div>'. get_string('errorminpasswordlength', 'auth', $CFG->minpasswordlength) .'</div>';
        }
        if (preg_match_all('/:digit:/u', $password, $matches) < $CFG->minpassworddigits) {
            $errmsg .= '<div>'. get_string('errorminpassworddigits', 'auth', $CFG->minpassworddigits) .'</div>';
        }
        if (preg_match_all('/:lower:/u', $password, $matches) < $CFG->minpasswordlower) {
            $errmsg .= '<div>'. get_string('errorminpasswordlower', 'auth', $CFG->minpasswordlower) .'</div>';
        }
        if (preg_match_all('/:upper:/u', $password, $matches) < $CFG->minpasswordupper) {
            $errmsg .= '<div>'. get_string('errorminpasswordupper', 'auth', $CFG->minpasswordupper) .'</div>';
        }
        if (preg_match_all('/[^[:upper:][:lower:][:digit:]]/u', $password, $matches) < $CFG->minpasswordnonalphanum) {
            $errmsg .= '<div>'. get_string('errorminpasswordnonalphanum', 'auth', $CFG->minpasswordnonalphanum) .'</div>';
        }
        if (!check_consecutive_identical_characters($password, $CFG->maxconsecutiveidentchars)) {
            $errmsg .= '<div>'. get_string('errormaxconsecutiveidentchars', 'auth', $CFG->maxconsecutiveidentchars) .'</div>';
        }
    }

[ 修正後 ]
function check_password_policy($password, &$errmsg, $user = null) {
    global $CFG;

    if (!empty($CFG->passwordpolicy)) {
        $errmsg = '';
        if (core_text::strlen($password) < $CFG->minpasswordlength) {
            $errmsg .= '<div>'. get_string('errorminpasswordlength', 'auth', $CFG->minpasswordlength) .'</div>';
        }
        if (preg_match_all('/:digit:/u', $password, $matches) < $CFG->minpassworddigits) {
            $errmsg .= '<div>'. get_string('errorminpassworddigits', 'auth', $CFG->minpassworddigits) .'</div>';
        }
        if (preg_match_all('/:lower:/u', $password, $matches) < $CFG->minpasswordlower) {
            $errmsg .= '<div>'. get_string('errorminpasswordlower', 'auth', $CFG->minpasswordlower) .'</div>';
        }
        if (preg_match_all('/:upper:/u', $password, $matches) < $CFG->minpasswordupper) {
            $errmsg .= '<div>'. get_string('errorminpasswordupper', 'auth', $CFG->minpasswordupper) .'</div>';
        }
        if (preg_match_all('/[^[:upper:][:lower:][:digit:]]/u', $password, $matches) < $CFG->minpasswordnonalphanum) {
            $errmsg .= '<div>'. get_string('errorminpasswordnonalphanum', 'auth', $CFG->minpasswordnonalphanum) .'</div>';
        }
        if (!check_consecutive_identical_characters($password, $CFG->maxconsecutiveidentchars)) {
            $errmsg .= '<div>'. get_string('errormaxconsecutiveidentchars', 'auth', $CFG->maxconsecutiveidentchars) .'</div>';
        }
        if (preg_match_all('/012|123|234|345|456|567|678|789/', $password, $matches)) {
            $errmsg .= '<div>'. get_string('passwordpolicy', 'admin') . get_string('error') .'</div>';
        }
        if (preg_match_all('/abc|bcd|cde|def|efg|fgh|ghi|hij|ijk|jkl|klm|lmn|mno|nop|opq|pqr|qrs|rst|stu|tuv|uvw|vwx|wxy|xyz/', $password, $matches)) {
            $errmsg .= '<div>'. get_string('passwordpolicy', 'admin') . get_string('error') .'</div>';
        }
        if (preg_match_all('/ABC|BCD|CDE|DEF|EFG|FGH|GHI|HIJ|IJK|JKL|KLM|LMN|MNO|NOP|OPQ|PQR|QRS|RST|STU|TUV|UVW|VWX|WXY|XYZ/', $password, $matches)) {
            $errmsg .= '<div>'. get_string('passwordpolicy', 'admin') . get_string('error') .'</div>';
        }
    }
Mitsuhiro Yoshida への返信

Re: パスワードポリシーについてご教示ください。

- koooootaro mooooodle の投稿
ご返答ありがとうございます。
希望どおりの動作を確認しました。

今後ともよろしくお願いいたします。