Ver. 3.2.39 & Ver. 3.1.80 & Ver. 3.0.68 リリースのお知らせ
こんにちは、a-blog cms 開発チームです。2026年11月4日に、Ver. 3.2.39 と Ver. 3.1.80、Ver. 3.0.68 をリリースしました。
Ver. 3.2.39 は、不正なアクセスから監査ログを守る機能や、Twig で URL を作れる関数、フォームのログの自動削除などが入った、盛りだくさんのアップデートです。この記事では、3 つのバージョンの変更内容を紹介します。
リリースノート
Ver. 3.2.39 の変更点
Features
CMS-7774 不正アクセスによる監査ログ肥大化対策の仕組み整備
CMS-7929 同じ監査ログの書き込み頻度に上限を設ける
CMS-7930 監査ログの記録から除外する接続元を管理画面で設定できるようにする
CMS-7931 セキュリティイベントの記録を統一し、失敗を繰り返す接続元の POST を自動でブロックする
CMS-7932 監査ログにセキュリティイベントの種類を記録し、一覧で絞り込めるようにする
CMS-7958 V2 エントリータグリレーショナルでサマリーの表示を管理画面から切り替えられるようにする
CMS-8003 acms_link / acms_path を Twig 関数として公開
CMS-8004 メディアダウンロード URL の直貼りに対応
CMS-8007 フォームのログを保持期間で自動削除できるようにする
Changed
CMS-7928 外部入力だけで起きる監査ログのレベルを見直し、メッセージを無害化する
CMS-7967 フォームのログを残さない設定を既定にする
CMS-7980 ダッシュボードの DB 文字コード表示で、接続とカラムが共に utf8mb3 の場合は注意色にしない
CMS-8005 タグ絞り込みで選択数が多いと検索が重くなる問題の改善
CMS-8026 標準テンプレートの https:// インクルードが動作しない問題と、外部インクルードの取得処理の修正
CMS-8028 WAF に遮断されにくいようパスワード変更画面の管理ページ名を変更する
CMS-8030 サブモジュールを Developテーマ v1.1.10・UTSUWAテーマ v3.0.17 に更新
Security
CMS-7937 メール送信まわりの安全性を向上
CMS-7973 セキュリティに関する内部処理の強化
CMS-7999 外部コンテンツの取得処理の安全性を向上
Fixed
CMS-7961 テーマの SEO 用 meta タグの不具合修正と keywords の廃止
CMS-7964 最適化済みの画像をアップロードすると再エンコードでファイルサイズが増える問題の修正
CMS-7969 Ver. 3.2.0 より全カテゴリーを除外すると所属記事がサイトマップに残る問題の修正
CMS-7971 期間指定中のスケジュール日付リンクでエラーが発生する問題の修正
CMS-7972 スマホで管理画面の日付・時刻欄のアイコンが2重に表示される問題の修正
CMS-7979 Json_2Tpl の取得元に {} を含む URL を指定すると保存できない問題の修正
CMS-7982 Imagick 拡張に autoOrient() が無い環境で画像アップロードが 500 になる問題の修正(Ver. 3.2.25 より)
CMS-7984 Ver. 3.2.27 より、データ修正の「カスタムフィールドの検索対象修正」が実行したブログ以外のカスタムフィールドも検索対象にしてしまう問題の修正
CMS-7988 ユーザー新規作成時に「子ブログにも権限を与える」のチェックを外しても有効のまま保存される問題の修正
CMS-7990 Ver. 3.2.29 より、エントリー編集画面のカテゴリー追加でモーダルが閉じず選択欄に反映されない問題の修正
CMS-7991 Ver. 3.2.12 より CSVインポートでカスタムフィールド更新キー指定時にエントリーコードが自己重複判定される問題の修正
CMS-7992 CSVインポートでバックスラッシュ直後の引用符を含む値が破損する問題の修正
CMS-7995 Ver. 3.2.0 より、ユニット一覧モジュールの並び順を「ランダム」にすると SQL エラーになる問題の修正
CMS-7998 Ver. 3.2.30 より、フォームでファイルサイズの上限を超えるファイルを添付するとエラーになる問題の修正
CMS-8009 プラグインの ctx.events.on でゲートイベントの cancel が使えない問題の修正(Ver. 3.2.33 より)
CMS-8010 フォームの宛先の複数指定を無効にする設定が一部の送信方法で効かない問題の修正
CMS-8011 コンフィグのインポート後にブログ・カテゴリーのコンフィグセットの割り当てが外れる問題の修正(Ver. 3.0.14 より)
CMS-8012 V2 モジュールのキャッシュがモジュール ID の保存で消えない問題と、別ブログの同名 ID で結果が混ざる問題の修正
CMS-8013 テンプレートキャッシュ有効時に @extends のパスのグローバル変数が置換されない問題の修正(Ver. 3.0.14 より)
CMS-8020 フォームの管理者宛メールの送信元が訪問者のアドレスになる問題の修正
CMS-8021 Twig のフィルター登録と校正オプション selected・checked の不具合の修正
CMS-8022 拡張アプリのインストール・更新などで Error を取りこぼし、管理画面が 500 になる問題の修正
CMS-8023 フォームのインポートが ID の重複と形式を検査しない問題と、フォーム ID の形式検査が緩い問題の修正
CMS-8029 長時間動く処理(cron・バックグラウンド処理)で監査ログの書き込み上限が効かない問題の修正
CMS-8031 Google マップのカスタムフィールドで検索ボタンが input[type="button"] だと検索欄が有効にならない問題の修正(Ver. 3.2.0 より)
Ver. 3.1.80 の変更点
Security
CMS-8001 セキュリティに関する内部処理の強化
Fixed
CMS-7987 Ver. 3.1.51 より、ロール管理で、ロールの権限判定がブログの管轄範囲を無視してしまう問題の修正
Ver. 3.0.68 の変更点
Security
CMS-8002 セキュリティに関する内部処理の強化
不正なアクセスが続くと、監査ログが大量に書き込まれて、データベースが大きくなってしまうことがありました。今回のアップデートで、これを防ぐための機能を 4 つ追加しました。
1. 古い監査ログを自動で削除する
監査ログは、保存から 365 日を過ぎると自動で削除されます。日数は .env ファイルで変えられ、0 にすると削除しません。管理画面の監査ログには、いまの保持期間が表示されます(上の画像)。
2. 同じログの書き込みを制限する
同じ内容のログが短い時間に何度も出たときは、一定の件数を超えた分を書き込まないようにしました。
3. 記録しない接続元を指定する
監視ツールなど、記録が要らない接続元は、管理画面の「コンフィグ」の「監査ログ」から指定できます。1 行に 1 件、IP アドレスか CIDR で入力します。
4. 失敗をくり返す接続元を自動でブロックする
ログインの失敗や CSRF の不一致など、セキュリティに関わる出来事を「セキュリティイベント」として、種類つきで記録するようにしました。監査ログの一覧では、種類を選んで絞り込めます。同じ接続元から短い時間に何度も起きたときは、その接続元からの、ログインしていない状態の POST を、しばらく受け付けません。
保持期間や上限、ブロックの回数は、.env ファイルで設定します。
AUDIT_LOG_RETENTION_DAYS=365 # 監査ログを残す日数(0 は無期限)
AUDIT_LOG_RATE_LIMIT_PER_IP=10 # 同じ接続元・同じログの上限(時間枠あたり)
AUDIT_LOG_RATE_LIMIT_GLOBAL=100 # 接続元を問わない同じログの上限(時間枠あたり)
AUDIT_LOG_RATE_LIMIT_WINDOW=60 # 時間枠(秒)
SECURITY_IP_BLOCK_THRESHOLD=30 # ブロックする回数(0 はブロックしない)
SECURITY_IP_BLOCK_TRIAL_TIME=10 # 回数を数える時間(分)
SECURITY_IP_BLOCK_TIME=30 # ブロックする時間(分)詳しい設定は、ドキュメントの「保持期間・書き込み上限・不正アクセス対策」をご覧ください。
CMS-8003 acms_link / acms_path を Twig 関数として公開
Twig テンプレートの中から、a-blog cms の URL を作れる関数 acms_link() と acms_path() を追加しました。ブログ ID やカテゴリー ID などを連想配列で渡すだけで、URL を組み立てられます。
{# ブログ ID 1 のカテゴリー ID 5 の一覧ページ #}
<a href="{{ acms_link({ bid: 1, cid: 5 }) }}">カテゴリー</a>
{# 現在のページの状態を引き継がずに、ブログのトップだけを指定する #}
{{ acms_link({ bid: 1 }, { inherit: false }) }}管理画面のページへのリンクも、admin に管理ページ名を指定すれば作れます。ログインしている状態では、ID を指定した形式(bid/1/cid/5/admin/...)になります。
<a href="{{ acms_link({ bid: BID, cid: cid, admin: 'category_edit' }, { inherit: false }) }}">カテゴリーを編集</a>従来の記法(.html)のテンプレートでは、URL のセグメント名をグローバル変数として出力できるようになりました。bid/ や admin/ を直接書かずに済みます。
<a href="/%{BID_SEGMENT}/%{BID}/%{ADMIN_SEGMENT}/entry_editor/">エントリー一覧</a>詳しくは、ドキュメントの「組み込み Twig 関数 acms_link / acms_path」と「グローバル変数」をご覧ください。
CMS-8007 フォームのログを保持期間で自動削除できるようにする
フォームの投稿データ(ログ)には、メールアドレスや本文などの個人情報が含まれます。放っておくとたまり続けるため、自動で削除する機能を追加しました。フォームの編集画面の「ログの保持日数」に日数を入れると、その日数を過ぎたログが自動で削除されます。0 のときは削除しません(これまでと同じです)。
また、新しくフォームを作るときは、「ログを残さないようにする」にチェックが入った状態が既定になりました(CMS-7967)。すでにあるフォームの設定は変わりません。投稿データを管理画面で確認したいフォームは、チェックを外してください。
メールの送信回数の制限は、フォームの編集画面の「セキュリティ」で確認できます。同じ宛先や同じ接続元から短時間にメールが集中したときに、制限をかけます。
詳しくは、ドキュメントの「フォームの投稿データ(ログ)の保持と送信回数の制限」をご覧ください。
CMS-8004 メディアダウンロード URL の直貼りに対応
本文(テキストユニットやブロックエディター)に、メディアのダウンロード URL をそのまま貼っていても、そのメディアが使われている場所として扱えるようになりました。メディア ID に紐づいていない URL でも、メディアのダウンロードの可否の判定や、エクスポート・インポートの対象になります。インポートのときは、貼られた URL を、移行先のメディアに付け替えます。
この機能は、設定で有効にする必要があります。 メディアファイルのステータスが「エントリーの公開状態に従う」のとき、メディア ID に紐づく参照(メディアユニットなど)に加えて、本文(テキストユニットやブロックエディター)に書かれたダウンロード URL も、使用箇所として扱うかどうかを指定します。新規インストールでは、はじめから有効(on)です。すでに運用しているサイトでは無効(off)のままなので、使うときは config.system.yaml に指定してください。
media_download_usage_by_url: on # on | off既存のサイトで有効にすると、非公開のエントリーでしか使われていないメディアは、ダウンロードできなくなる場合があります。有効にする前に、メディアの使われ方を確認してください。
最後に該当する問題がございましたら、できるだけ早めのバージョンアップをご検討ください。今後もご報告いただいた内容に対して真摯に受け止め修正と改善を行ってまいります。今後ともどうぞよろしくお願いいたします。



