【要望】会員ログイン試行制限のログ保存先について(再送)

フォーラム › 要望と提案 › 【要望】会員ログイン試行制限のログ保存先について(再送)

  • このトピックには2件の返信、2人の参加者があり、最後にefuにより20時間、 43分前に更新されました。
3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • 投稿者
    投稿
  • #104373
    nglife
    参加者

    ——————————————-
    WordPress のバージョン:6.9.7
    Welcart のバージョン:2.11.26(→ 2.11.35に上げたのち、2.12.3に上げたい)
    PHP のバージョン:8.2
    Welcart専用の拡張プラグインとバージョン:-
    ご利用の親テーマとバージョン :-
    ご利用の子テーマとバージョン :-
    利用している決済モジュール:-
    症状を確認したブラウザ:-
    サーバー【重要】:-
    ——————————————–
    ※スパム判定されてしまったので再送いたします

    いつもお世話になっております。AWS の ALB 配下(nginx / KUSANAGI)で Welcart を運用しております。2.12.3(2.11.35) のコードを確認したうえでの要望です。

    RateLimiter(会員ログイン試行制限)は、現在以下にJSONファイルを書き出す実装になっています。

    – wp-content/uploads/usces_logs/member_login_failed.log
    – wp-content/uploads/usces_logs/ip_addresses_blocked.log

    この方式について2点の懸念があります。

    1. Webサーバが直接配信する領域に置かれている

    uploads は通常、Webから直接アクセスできる領域です。initLogsFolder() は

    if ( ! is_dir( $this->folder_log_path ) ) {
    	mkdir( $this->folder_log_path, 0775 );
    }

    とディレクトリを作成するのみで、.htaccess や index.php を設置しません。そのため URL を直接指定されると、ブロック中のIP一覧や失敗履歴が取得できてしまう可能性があります。nginx 環境では .htaccess が機能しないため、仮に設置いただいても回避手段になりません。セキュリティ機能のログが外部から読める状態は避けたいところです。

    2. 排他制御がない

    getLoginFailedData() で読み込み → 加工 → file_put_contents() で全体を書き戻す構造で、ファイルロックが行われていません。ログイン試行が集中する場面(=まさにこの機能が働くべき場面)で記録の消失や破損が起こり得ます。

    専用テーブルの追加、あるいは wp_options / transient への保存に変更していただければ、上記2点がいずれも解消されます。データ量も「監視期間内の失敗回数」と「ブロック中IP」のみで、DB保存に適した規模かと思われます。

    先にお送りした内容、

    【要望】ロードバランサー配下での送信元IP取得について

    の件とあわせて、何卒ご検討のほどよろしくお願いいたします。

    #104377
    efu
    キーマスター

    nglife 様

    ご報告ありがとうございます。
    ログファイルの取り扱いにつきましては、以前より検討課題として認識しております。
    今回いただいたご指摘も踏まえ、保存方式の見直しを含めて対応を検討いたします。
    ただし、実装方法および対応時期につきましては、現時点で確定的なことを申し上げられる段階にありません。方針が固まり次第、改めてお知らせいたします。

    #104411
    efu
    キーマスター

    nglife 様

    ご報告いただいた件について対応バージョンをリリースいたしました。
    Welcart 2.12.5 リリース情報
    お手数をおかけいたしますがアップグレードし確認いただけますと幸いです。
    引き続き Welcartをよろしくお願いいたします。

3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • このトピックに返信するにはログインが必要です。