Ver. 3.2.29 & Ver. 3.1.75 & Ver. 3.0.61 リリースのお知らせ


この記事では、2026年8月26日にリリースした Ver. 3.2.29 と Ver. 3.1.75、Ver. 3.0.61 の変更内容について紹介いたします。

現在お困りの問題に該当する項目がありましたら、お早めにバージョンアップのご検討をお願いいたします。


リリースノート

Ver. 3.2.29 の変更点

Features

  • CMS-7724 ブログ/カテゴリー/ユーザー/フォーム作成後に編集画面へ遷移するように変更

  • CMS-7772 サイト内検索で半角カナの濁点・半濁点が全角データにヒットしない問題の対応(検索テキストのカナ正規化設定を追加)

  • CMS-7814 管理画面「データ修正」にWebP変換機能を追加

  • CMS-7831 コンフィグセット単位のエクスポート・インポート機能の追加

  • CMS-7834 htmxの読み込み戦略設定(htmx_load_strategy)の追加

Changed

  • CMS-7721 React 19 アップデート & Tiptap v3 アップデート

  • CMS-7773 システム更新のパッケージ解凍失敗時に原因を特定できるようにする

  • CMS-7782 SmartPhoto のアクセシビリティ向上

  • CMS-7823 埋め込みユニットの表記が一部「引用」のまま残っているのを統一

  • CMS-7832 クライアントキャッシュ有効時間(cache_expire_client)の既定値を0に変更

Security

  • CMS-7703 Json_2Tplのパストラバーサル・SSRF・LFI対策

  • CMS-7705 外部通信の TLS 証明書検証が無効化されている問題の修正

  • CMS-7784 リバースプロキシ配下でのアクセス元IPアドレスの判定を厳格化

  • CMS-7785 リバースプロキシ配下での接続情報の判定を厳格化

Fixed

  • CMS-7771 CDN配下でのキャッシュオフロードを阻害するCache-Controlヘッダー(no-cache)がページキャッシュ配信経路に残っている問題の修正

  • CMS-7813 静的書き出しのCLI実行時にサブディレクトリ設置環境で404になる問題の修正

  • CMS-7827 データベースのリストアで監査ログ(audit_log)が消去される問題の修正

  • CMS-7828 シンボリックリンク環境でインストーラーが Bin directory not found になる問題の修正

  • CMS-7829 Squareテーマがインストールできない問題の修正

  • CMS-7830 ブログインポート時に field_bid / geo_bid が読み替えられずカスタムフィールドが壊れる問題の修正

  • CMS-7833 サブディレクトリ設置環境の静的書き出しでルート相対パスの書き換えが不正になる問題の修正

Ver. 3.1.75 の変更点

Security

  • CMS-7835 Json_2Tplのパストラバーサル・SSRF・LFI対策

  • CMS-7837 外部通信の TLS 証明書検証が無効化されている問題の修正

  • CMS-7794 リバースプロキシ配下でのアクセス元IPアドレスの判定を厳格化

  • CMS-7795 リバースプロキシ配下での接続情報の判定を厳格化

Fixed

  • CMS-7760 htaccess.txt/.htaccessの記述をApache 2.4構文に統一

Ver. 3.0.61 の変更点

Fixed

  • CMS-7761 htaccess.txt/.htaccessの記述をApache 2.4構文に統一

Security

  • CMS-7836 Json_2Tplのパストラバーサル・SSRF・LFI対策

  • CMS-7838 外部通信の TLS 証明書検証が無効化されている問題の修正

  • CMS-7804 リバースプロキシ配下でのアクセス元IPアドレスの判定を厳格化

  • CMS-7805 リバースプロキシ配下での接続情報の判定を厳格化


リリースノートの補足

CMS-7724 ブログ/カテゴリー/ユーザー/フォーム作成後に編集画面へ遷移するように変更

ブログ・カテゴリー・ユーザー・フォームなどを新規作成した際、作成完了後にその編集画面へ自動的に遷移するようになりました。

あわせて、作成完了時のお知らせ表示をURLパラメータ方式からセッションを使った一度限りの表示方式に変更しています。作成直後のページをリロードしたり、URLを共有したりしても「作成しました」の通知が再表示され続けることがなくなりました。

CMS-7831 コンフィグセット単位のエクスポート・インポート機能の追加

コンフィグセットインポート画面
コンフィグセットインポート画面

コンフィグセット単位ごとにコンフィグをエクスポート・インポートできる機能を追加しました。

コンフィグセット詳細画面からエクスポートし、一覧画面からインポートする導線を用意しています。インポート時には、新規に追加するだけでなく、既存のコンフィグセットを置き換えることも選べます。

案件間で共通の設定を使い回したい場合や、開発環境で作った設定を本番環境へ持ち込みたい場合などにお使いいただけます。

CMS-7834 htmxの読み込み戦略設定(htmx_load_strategy)の追加

症状

組み込みJSの htmx を利用したページ内リンクで、ブラウザの「戻る」「進む」ボタンを使った際に 画面の中身が更新されないことがありました。

これはhtmxの初期化処理(ready())が実行されないことに起因する問題のうち、 最も気づかれやすい一例です。ready()は「戻る/進む」対応だけでなく、 以下の処理もまとめて行っているため、初期化が実行されない場合は 他の症状として現れることもあります。

  • ページ内のhx-*属性がまったく動作しない 「戻る/進む」対応と根本原因は同じで、hx-gethx-postを指定したボタン・ リンクをクリックしても何も起こらない、という形で現れることがあります

  • <meta name="htmx-config">で指定した設定が反映されない historyCacheSizedefaultSwapStyleなどの設定を行っていても、 無視されて既定値の挙動になることがあります

  • ローディングインジケーター(.htmx-indicator)用のスタイルが 差し込まれず、表示/非表示の見た目が意図通りにならない

  • htmx:loadイベントに依存する他のJavaScript(サードパーティ連携や 自作の初期化コードなど)が動作しない このイベントを起点に処理を行っている実装がある場合、影響を受けます

これらはhtmxの初期化処理そのものが止まることに起因する、原理上考えられる 症状です。実際にどこまで顕在化するかはページの構成やタイミングに左右され、 発生条件が不安定(同じページでも読み込みタイミング次第で起きたり 起きなかったりする)なのも特徴です。

原因

a-blog cmsでは、JavaScriptで、ページ内にhx-*属性を検出した場合にのみhtmxを動的に読み込む 「遅延読み込み」方式(dynamic)を採用しています。

一方、htmx公式は、モジュール読み込みや動的挿入を含む非同期的な読み込みについて、 標準的な<script>タグでのブロッキング読み込みを前提に設計されており、 それ以外の読み込み方法は動作を保証していないことを明言しています。 実際、htmx本体側でもこの制限を解消しようとする試みが複数回行われましたが、 いずれも別の不具合を招く結果となり撤回された経緯があります (詳細は htmx quirks: Loading htmx asynchronously is unreliable を参照)。

今回の「戻る/進むボタンで画面が更新されない」不具合は、a-blog cmsの 動的読み込み方式が、この既知の制限に該当したことが原因です。

対応

private/config.system.yamlhtmx_load_strategy 設定を追加しました。

htmx_load_strategy: static

内容

dynamic(既存サイトの既定値)

hx-*属性検出時にJavaScriptで htmxを動的に読み込む従来方式。htmxが不要なページでは読み込まれず軽量ですが、戻る/進むボタンの不具合が起こり得ます。

static(新規インストールの既定値)

hx-*属性検出時にPHP 側で標準的な<script>タグを出力し、htmxを読み込む、htmx公式が想定する方式。戻る/進むボタンの不具合は発生しません。

移行ガイド

  • 既定値は互換性維持のため従来どおり dynamic です。既存サイトの動作は変わりません。

  • hx-push-url を使用しているサイト(ブラウザ履歴と連動する構成)では、 static への切り替えを推奨します。

  • hx-ext属性でhtmx拡張機能を利用しているサイトは、dynamic のままだと 今後別の初期化順序の問題が起こり得るため、あわせて static への切り替えを ご検討ください。

  • 新規インストール時は static が既定値のため、通常はそのままご利用ください。

CMS-7721 React 19 アップデート & Tiptap v3 アップデート

管理画面のReactを19系、リッチエディタのTiptapをv3系へアップデートしました。

あわせて、管理画面の拡張基盤を整備しました。型付きイベントバスACMS.events、プラグイン登録の仕組みACMS.plugins、UIの差し込み口(Slot/Fill)などを通じて、プラグイン開発者や制作パートナーがコア改修なしに管理画面の挙動をJavaScriptでカスタマイズできるようになります。

これらの基盤を含む管理画面のパッケージ群(@ablogcms/*)をnpmで公開しました。プラグイン開発時にご利用いただけます。

Ver.3.2.29 現在では実験的機能としての提供になります。予告なく仕様変更が発生する可能性があるのでその点はご了承ください。

CMS-7782 SmartPhoto のアクセシビリティ向上

画像を拡大表示するライブラリ SmartPhoto を最新版へ更新しました。カルーセル操作のラベルなど、アクセシビリティに関する改善が含まれています。

https://appleple.github.io/SmartPhoto/

セキュリティ的な仕様変更の補足

外部URLを取得する機能のセキュリティ強化(Json_2Tplモジュール)

JSON2TPLモジュールで取得先に指定するURLについて、以下の制限を追加しました。

  • 社内ネットワークやプライベートIPアドレス宛のURLは取得できません

  • ローカルファイルの参照は、テーマディレクトリ配下に限定されます

  • レスポンスの Content-Type は JSON・プレーンテキスト系のみ許可されます(それ以外は取得できません)

  • レスポンスサイズの上限(既定5MB)、リダイレクト回数の上限(デフォルト5回)を設けました

社内システムのAPIやテーマ外のローカルファイルを取得先に指定している場合は、取得できなくなることがあります。その場合は、環境設定ファイル(.env)に以下の設定を追記して明示的に許可してください。

JSON2TPL_SSRF_WHITE_LIST=10.0.1.0/24,192.168.1.100
JSON2TPL_LOCAL_WHITE_LIST=storage/,/var/www/shared-data
JSON2TPL_MAX_CONTENT_LENGTH=5242880
JSON2TPL_MAX_REDIRECTS=5

外部URLを指定できる機能でのTLS証明書検証の有効化

Webhookの送信先URL、埋め込みユニットの参照先URLなど、利用者側で任意のURLを指定できる機能について、TLS証明書の検証を既定で有効にしました。

送信・取得先のサーバーが自己署名証明書や期限切れ証明書を使用している場合、通信が失敗するようになります。該当する送信先・参照先がある場合は、正しい証明書への切り替えをご検討ください。

.env に HTTP_SSL_VERIFY=false を設定することで検証を無効化する仕組みもありますが、本番相当の環境(DEBUG_MODE が無効な環境)では機能しません(中間者攻撃を防ぐための仕様上の制約です)。開発環境での一時的な検証用途に限られるため、本番での恒久対応としては通信先の証明書を是正してください。

(LINEログインなど、CMS側であらかじめ通信先が固定されている機能は対象外です。)

HTTP_SSL_VERIFY=false

プロキシ配下でのアクセス元IP判定の厳格化

ロードバランサー・リバースプロキシ配下で運用しているサイトについて、config.server.php の TRUSTED_PROXY_LIST で指定したプロキシから接続してきた場合に限り、X-Forwarded-For 等の転送ヘッダーを信用するようにしました。

これまでは TRUSTED_PROXY_LIST が設定されていれば、接続元がそのプロキシ自身かどうかに関わらず転送ヘッダーを信用していたため、TRUSTED_PROXY_LIST の記述漏れ・タイポ・ロードバランサーのIP変更などがあった場合、意図せず転送ヘッダーが無視され、ログインIP制限・ログイン試行ロック・監査ログのアクセス元IPがロードバランサー自身のIP(実質同一IP)になっていることがあります。

該当する運用をしている場合は、config.server.php の TRUSTED_PROXY_LIST に、実際に接続してくるロードバランサー・プロキシのIPアドレス(またはCIDR)を正しく指定してください。IPアドレスが動的に変わり事前に列挙できない構成では、次のように ‘*’ を指定できます(「すべてのIPを信頼する」ではなく「接続してきた相手だけを信頼する」という意味です)。

// サーバーへプロキシ経由以外で到達できない構成でのみ使用してください
define('TRUSTED_PROXY_LIST', '*');
// IPアドレス範囲が公開されているCDN(Cloudflare等)ではCIDRで列挙してください
// define('TRUSTED_PROXY_LIST', '173.245.48.0/20,103.21.244.0/22');

クライアントキャッシュまわりの見直し

クライアントキャッシュ有効時間のデフォルト値変更

クライアントキャッシュ有効時間(cache_expire_client)のデフォルト値を 300秒 から 0秒(キャッシュしない)に変更しました。

既存サイトを本バージョンにアップデートする場合、管理画面または private/config.system.yaml で明示的に値を設定したことがある場合はその値が優先されるため影響はありません。一方、一度も管理画面やprivate/config.system.yaml から明示的に変更したことがなく、デフォルト値に依存している場合は、この変更によりキャッシュ有効時間が変わりますのでご注意ください。

CDN 配下での Cache-Control ヘッダー修正

CDN(CloudFront・Cloudflare等)配下で運用しているサイトについて、これまで中間キャッシュのオフロードを妨げていた Cache-Control ヘッダーの記述を修正しました。修正後は CDN 側でのキャッシュが正しく効くようになるため、更新反映のタイミングが CDN のキャッシュ有効時間(s-maxage、上記のキャッシュ有効時間の設定値と連動)に依存するようになります。即時反映を期待する運用をしている場合は、上記のキャッシュ有効時間の設定もあわせてご確認ください。


最後に

該当する問題がございましたら、できるだけ早めのバージョンアップをご検討ください。

今後もご報告いただいた内容に対して真摯に受け止め修正と改善を行ってまいります。

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

同じタグ付けがされている記事