Craft CMS を安全に利用するために

去る10月20日に Movable Type の脆弱性がアナウンスされました。

Movable TypeのXMLRPC APIにおける脆弱性(CVE-2021-20837)に関する注意喚起
https://www.jpcert.or.jp/at/2021/at210047.html

サポートが終了しているとはいえ、Movable Type 4.0 以上であれば速やかに対応が必要です。

Movable Type の XMLRPC API における OS コマンドインジェクションの脆弱性 (CVE-2021-20837) を悪用した攻撃被害に関する対応メモ | WWW WATCH
https://hyper-text.org/archives/2021/12/movable_type_xmlrpc_api_vulnerability.shtml

こちらのケースと同様、自分の身近なところでも被害に遭われた方がいて、従来より深刻だなと捉えています。
心当たりのある方もない方もご自身が携わるサーバーが該当しないか、ぜひ確認してみてください。

とはいえ、システムにバグが存在するのは仕方ありません。
大事なのは「より安全に利用できるよう」対策したり、日頃からメンテナンスすることですよね?

そこで、普段 Craft CMS を利用する際に気をつけていることをまとめてみます。
これは Craft CMS Advent Calendar 2021 1日目の記事です。

Craft CMS 向けのローカル環境を Apple Silicon 対応の Technical Preview 版 Docker Desktop で動くようにしてみた

これは Craft CMS Advent Calendar 2020 25日目の記事です。

去る12月16日に Apple Silicon 搭載の Mac に対応した Tech Preview of Docker Desktop for M1 が公開されました。正直「来年、少しでも早い時期にβ版が出ればいいな」くらいに思っていたので、嬉しい誤算です。

Download and Try the Tech Preview of Docker Desktop for M1 - Docker Blog
https://www.docker.com/blog/download-and-try-the-tech-preview-of-docker-desktop-for-m1/

早速試してみたところ、自分の使用範囲では問題なさそう。。。
ということで、利用にあたって必要となる設定ファイルのカスタマイズ方法について、備忘録を兼ねてまとめてみます。

Craft CMS のテストメールを MailHog で受信する

これは Craft CMS Advent Calendar 2020 23日目の記事です。

過去記事の「ローカル環境を Docker で構築してみた」で触れている通り、Docker を利用してローカル環境を用意しています。その際「スキルの問題で sendmail を利用できるようにするのが大変」というネックがあり、外部の SMTP 経由でシステムからの送信テストを行っていました。

とはいえ、「大量に送信テストしたい」とか「オフラインでも動作確認したい」などと考えるうちに、MailHog のコンテナを立ててメールの送受信テストはそれを利用するようになったので、その方法についてまとめてみます。

Craft CMS で編集画面の保存時にサムネイル画像を生成する

これは Craft CMS Advent Calendar 2020 20日目の記事です。

プラグインで拡張している場合を除き、Craft CMS では生成用のコードを記載したテンプレートに初めてアクセスしたタイミングでサムネイル画像が生成されます。とはいえ、ページ内に複数のサムネイル画像を必要としたり、CDN キャッシュに画像変形用の URL ではなく実際のファイルパスを含めたいなど、フロントエンドでリクエストされる前にあらかじめサムネイル画像のファイルを生成しておきたいときがあります。

そこで、Craft 3.5 から搭載された新しいフィールドレイアウト機能を利用して、エントリをはじめ任意のエレメントを管理画面で保存したタイミングでサムネイル画像を生成する方法をご紹介します。

Craft CMS のプラグイン設定をファイルで管理する

これは Craft CMS Advent Calendar 2020 15日目の記事です。

本番環境と開発環境など、実際のプロジェクトでは複数のサーバーで作業することが多いと思います。その際、各種サービスの API キーやフォームの送信先メールアドレスなど、環境ごとにプラグインの設定を調整する必要があるでしょう。

通常であれば管理画面で操作する形になりますが、別環境からダンプしたデータベースをリストアする度に都度修正するのは面倒ですよね?

Craft CMS ではプラグインごとの設定ファイルが存在する場合、そこに定義された内容で設定値を上書きできます。

Craft CMS で元画像が一定のサイズ以上の場合のみ、サムネイル画像を生成する

これは Craft CMS Advent Calendar 2020 9日目の記事です。

Craft CMS ではテンプレートで指定したサイズよりも小さな画像を登録すると、生成されるサムネイル画像が「強制的に引き伸ばした状態」になってしまいます。もちろん最適化した画像をあらかじめ用意できればよいのですが、リニューアル時に既存コンテンツからデータを流用する場合など、難しいときもあるでしょう。

そこで、元画像が一定サイズ以上のときだけサムネイル画像を生成する方法について、ご紹介します。

Twig テンプレートでファイル拡張子を取得する

これは Craft CMS Advent Calendar 2020 5日目の記事です。

Craft CMS の アセット エレメントには、ファイルの種別を表す kind プロパティが存在します。
この分類は公式ドキュメントに記載されている通りで、実際のファイル拡張子とは異なります。

そこで、Twig フィルタを利用して簡単にファイル拡張子を取得する方法をご紹介します。

Craft CMS のエントリを指定した ID 順で取得する

これは Craft CMS Advent Calendar 2020 2日目の記事です。

Craft CMS では、エレメントクエリの id パラメータに複数の ID をセットすることで、目的のエレメントだけを取得できます。

このとき、デフォルトの出力結果は エレメントの投稿日順 となるため、ID の指定順で取得する方法をご紹介します。

Movable Type 7 のカスタムフィールドを簡単に並び替える

これは Movable Type Advent Calendar 2020 2日目の記事です。

Movable Type 7(以下、MT7)がリリースされてから約2年半が過ぎ、直近の導入案件では コンテンツタイプ に集約されているかと思います。とはいえ、要件によっては従来の 記事ページ ベースで進めることもあるハズ。

ということで、記事 のカスタムフィールドの並び順をコンソールから変更する方法をご紹介します。

Craft CMS のエントリ URL にカテゴリパスを追加する

これは Craft CMS Advent Calendar 2020 1日目の記事です。

Craft CMS では、セクションごとの エントリ URI 形式 にセットした内容に応じてエントリ詳細ページの URL が決定します。news/{id} のように入力データに依存しない形式であれば問題ありませんが、カテゴリパスを加えたい場合ひと工夫が必要です。

そこで今回は、複数階層のカテゴリパスを エントリ URL に加える方法について解説します。