Skip to content

ねんでぶろぐ

twitter facebook rss
WordPress Fudousan Plugin for Real Estate
  • TopPage >
  • セキュリティ >
  • WordPress ブラックリストで登録できないユーザー名を設定する

WordPress ブラックリストで登録できないユーザー名を設定する

Posted on 2017年3月30日 Update 2017年4月14日 by admin


今まで知らなかったフィルターですが「illegal_user_logins」というアクションフィルターが WordPress4.4 から使えるようになっています。
ユーザー名リストを作ってこのフィルターを使うと、このリストにあるユーザー名はユーザー登録の時に「エラー: 許可されないユーザー名です。」と表示され、拒否できるようになります。

例えば「admin」や「root」等、わざわざ避けて管理者を作ったのに「納品したらいつのまにか 管理者で root が追加登録されている!」や 会員サイトのユーザー等でこれを回避する事ができそうです。

WordPressをシングルサイトで使う場合は「illegal_user_logins」フィルター用のユーザー名リストは 何も設定されていませんが、マルチサイトで利用する場合は設定されています。
調べてみるとマルチサイトでは「wpmu_validate_user_signup」という関数内でこれだけのブラックリストを設定していました。

$illegal_names = array( 'www', 'web', 'root', 'admin', 'main', 'invite', 'administrator' );

 

サンプルコード

以下のコードを my-plugin.php に張り付けてください。

/**
 * 登録できないユーザー名を設定する
 *
 * @since 4.4.0
 *
 * @param array $usernames Array of blacklisted usernames.
 * License: GPLv2 or later
 */
function nendebcom_illegal_user_logins( $illegal_logins ){

	//Filters the list of blacklisted usernames.
	$illegal_names = array( 'www', 'web', 'root', 'admin', 'main', 'invite', 'administrator' );
	$illegal_logins = array_merge( $illegal_logins, $illegal_names );

	return $illegal_logins;
}
add_filter( 'illegal_user_logins', 'nendebcom_illegal_user_logins' );

※$illegal_names に 拒否したいユーザー名を追加してください。

試しに新規登録してみるとこんな表示がでます。
【wp-login.php】

【管理画面】

 
 

おまけ 文字数の制限

ついでにユーザー名の文字数の制限もやっておきましょう。
ユーザー名の最大文字数は60文字以下で制限されていますが最小は1文字でも登録できてしまいます。
マルチサイトでは4文字以上となっていますのでこちらも4文字以上になるようにします。

以下のコードを my-plugin.php に張り付けてください。

/**
 * ユーザー名の文字数の制限を4文字以上にする。(wp-login.php用)
 *
 * @since 2.1.0
 *
 * @param WP_Error $errors               A WP_Error object containing any errors encountered
 *                                       during registration.
 * @param string   $sanitized_user_login User's username after it has been sanitized.
 * @param string   $user_email           User's email.
 * License: GPLv2 or later
 */
function nendebcom_registration_errors( $errors, $sanitized_user_login ){

	if ( strlen( $sanitized_user_login ) < 4 ){
		$errors->add('user_name',  __( 'Username must be at least 4 characters.' ) );
	}
	return $errors;
}
add_filter( 'registration_errors', 'nendebcom_registration_errors', 10, 2 );

/**
 * ユーザー名の文字数の制限を4文字以上にする。(管理画面用)
 *
 * @since 2.8.0
 *
 * @param WP_Error &$errors WP_Error object, passed by reference.
 * @param bool     $update  Whether this is a user update.
 * @param stdClass &$user   User object, passed by reference.
 * License: GPLv2 or later
 */
function nendebcom_user_profile_update_errors( $errors, $update, $user ){

	if ( strlen( $user->user_login ) < 4 ){
		$errors->add('user_name',  __( 'Username must be at least 4 characters.' ) );
	}
}
add_filter( 'user_profile_update_errors', 'nendebcom_user_profile_update_errors', 10, 3 );

試しに新規登録してみるとこんな表示がでます。
【wp-login.php】

【管理画面】

 

スポンサードリンク



 

参考

illegal_user_logins | WordPress Code Reference
https://developer.wordpress.org/reference/hooks/illegal_user_logins/

wpmu_validate_user_signup | WordPress Code Reference
https://developer.wordpress.org/reference/hooks/wpmu_validate_user_signup/

Plugin API/Action Reference/user profile update errors | WordPress Codex
https://codex.wordpress.org/Plugin_API/Action_Reference/user_profile_update_errors

Plugin API/Filter Reference/registration errors | WordPress Codex
https://codex.wordpress.org/Plugin_API/Filter_Reference/registration_errors




スポンサードリンク



Posted in セキュリティTagged illegal_user_logins, registration_errors, user_profile_update_errors, WordPress4.4

投稿ナビゲーション

← テーマカスタマイザー上のウィジェット設定でも options にも登録できるようにする
WordPress パスワード保護ページの 投稿パスワード を 一括編集できるようにする →

関連記事

WordPress ユーザー登録やコメントフォームのスパム対策例

これ書いちゃうと対策されるかもしれませんが、昔からこっそりやってるスパム対策です。 スパムは入力できる項目は、ほぼ全ての項目に何か入れて送ってきます。そこでCSSで隠した項目にデーターが入っていればスパムと判定してerrorを表示するよう ...

WordPressブルートフォースアタック対策

WordPressがデフォルトで設定する 「admin」のアカウントのパスワードを辞書を使用して見つけようとする大規模無差別攻撃が行われていました。 つまり特定のアカウントで何回もパスワードを変更してログインを試みると言う事です。 ...


スポンサードリンク

カテゴリー

  • WordPress
  • その他
  • セキュリティ
  • テーマ
  • プラグイン

Recent Posts

  • WordPress 6.8 をチェックしています
  • WordPress6.7 新デフォルトテーマ Twenty Twenty-Five をチェックしています
  • WordPress6.7 をチェックしています
  • WordPress 6.6 をチェックしています
  • WordPress 6.5 をチェックしています
  • WordPress6.4 を チェックしています
  • WordPress6.4 新デフォルトテーマ Twenty Twenty-Four をチェックしています
  • WordPress 6.3 を チェックしています

タグクラウド

activated_plugin activate_tinymce_for_media_description add_meta_boxes add_options_page add_theme_support admin_body_class admin_email_check_interval admin_enqueue_scripts admin_footer-$hook_suffix admin_head-$hook_suffix admin_init admin_menu admin_notices admin_print_styles-$hook_suffix after_setup_theme allowed_block_types_all appearance-tools appearanceTools apply_filters apply_shortcodes blockEditor.useSetting.before block_categories_all block_core_navigation_listable_blocks block_core_navigation_render_inner_blocks block_editor_settings_all bulk_actions-{screen_id} bulk_edit_custom_box bulk_edit_posts comment_form_after_fields compare_key Contact Form 7 custom-spacing customize_register customize_save_after date_i18n default-font-sizes default-spacing-sizes deleted_post_{$post->post_type} delete_post_{$post->post_type} delete_user delete_user_form deprecated_function_trigger_error document_title_parts document_title_separator editor_script_handles editor_style_handles edit_user_profile_update Embed embed_head embed_template embed_thumbnail_image_shape embed_thumbnail_image_size emoji enqueue_block_editor_assets fluid Fluid typography Fonts API Footnotes get_category_parents get_currentuserinfo get_file_data get_option get_parent_post get_parent_theme_file_path get_parent_theme_file_uri get_permalink get_query_template get_term_parents_list get_theme_file_path get_theme_file_uri get_the_content get_the_post_thumbnail get_the_title get_users Google APPs Google Fonts Google Maps Gutenberg has_post_parent has_post_thumbnail hooked_block/hooked_block_{$block_type} illegal_user_logins init is_admin_screen is_customize_preview is_post_status_viewable is_post_type_viewable is_singular is_user_logged_in jQuery Lazy-Loading login_footer login_form login_init login_site_html_link Masonry max-image-preview my-plugin new_admin_email_subject paginate_links_output password_hint personal_options personal_options_update phpmailer_init plugins_list plugin_row_meta post_password_expires post_password_required post_search_columns post_thumbnail_id post_thumbnail_url pre_comment_on_post pre_get_document_title pre_months_dropdown_query pre_wp_mail pre_wp_unique_post_slug prime_options prime_options_by_group protected_title_format quick_edit_dropdown_authors_args RECOVERY_MODE_EMAIL registered_post_type_{$post_type} registered_taxonomy_{$taxonomy} register_block_template.unregister_block_template register_form register_post register_sidebar register_{$post_type}_post_type_args register_{$taxonomy}_taxonomy_args registration_errors render_block_core_navigation_link_allowed_post_status render_block_{$this->name} rest_after_insert_attachment safecss_filter_attr sanitize_file_name script_handles script_loader_tag ServerSideRender site_search_columns site_status_autoloaded_options_action_to_perform site_status_autoloaded_options_limit_description site_status_autoloaded_options_size_limit skipBlockSupportAttributes style_handles templateLock template_redirect theme.json the_content the_custom_header_markup the_excerpt_embed the_excerpt_rss the_password_form the_post_navigation Twenty Eleven Twenty Fifteen Twenty Fourteen Twenty Nineteen Twenty Seventeen Twenty Sixteen Twenty Ten Twenty Thirteen Twenty Twelve Twenty Twenty Twenty Twenty-Fiver Twenty Twenty-Four Twenty Twenty-One Twenty Twenty-Three Twenty Twenty-Two TwitterAPI Update URI update_option upgrader_source_selection user_profile_update_errors user_search_columns view_script_handles WordPress4.1 WordPress4.2 WordPress4.3 WordPress4.4 WordPress4.5 WordPress4.6 WordPress4.7 WordPress4.8 WordPress4.9 WordPress5.0 WordPress5.1 WordPress5.2 WordPress5.3 WordPress5.4 WordPress5.5 WordPress5.6 WordPress5.7 WordPress5.8 WordPress5.9 WordPress6.0 WordPress6.1 WordPress6.2 WordPress6.3 WordPress6.4 WordPress6.5 WordPress6.6 WordPress6.7 WordPress6.8 wpcf7_form_tag WP Fastest Cache WP Multibyte Patch wp_add_inline_script wp_admin_canonical_url wp_after_insert_post wp_autoload_values_to_autoload wp_body_open wp_cache_set wp_content_img_tag wp_create_nonce wp_date WP_DEBUG_LOG wp_default_autoload_value wp_dequeue_script_module wp_dequeue_style wp_deregister_script_module wp_deregister_style WP_DEVELOPMENT_MODE wp_editor_set_quality wp_enqueue_script wp_enqueue_scripts wp_enqueue_script_module wp_enqueue_style wp_filesystem wp_footer wp_get_attachment_image wp_get_custom_css wp_get_document_title wp_head WP_HTML_Tag_Processor wp_is_block_template_theme wp_is_block_theme wp_is_rest_endpoint wp_mail wp_max_autoloaded_option_siz wp_omit_loading_attr_threshold wp_plugin_dependencies_slug wp_print_styles wp_register_script wp_register_script_module wp_replace_insecure_home_url wp_resource_hints wp_script_modules wp_set_options_autoload wp_set_option_autoload wp_targeted_link_rel wp_theme_files_cache_ttl wp_title wp_verify_nonce writingMode XAMPP _wp_render_title_tag {$adjacent}_post_link {$type}_template サイトエディタ フルサイト編集(FSE)
はざくみ イラストブログ

Proudly powered by WordPress | Theme: nendebcom by nendeb. | Privacy Policy