約 3,497 字 · 読むのに 6 分ほど
個人情報の漏洩対策というと、暗号化やアクセス制限を思い浮かべます。でも、その前にできることがあります。要らない個人情報を、最初から持たないことです。WordPress プラグイン PIIP を 1.8.0 に更新し、日本語にも対応しました。
漏れる前に、そもそも持たない
流出対策(暗号化、アクセス制限、ログの監視など)は、どれも「データを持っている」ことが前提です。持っているものは、いつか漏れる可能性があります。持っていなければ、漏れようがありません。
そして、サイトには「持つつもりがなかった」個人情報が意外と入り込みます。
- 問い合わせフォームと間違えて、コメントや掲示板に名前・住所・電話番号を書き込む
- エラーの相談で、パスワードや API キー入りの設定ファイルをそのまま貼る
- スマートフォンで撮った写真をアップロードしたら、撮影場所の GPS 座標が付いていた
こうした情報は、サイトの運営に必要ありません。それでも、データベースや画像ファイルに入ってしまえば、守るべきデータになります。そこで、持つべきデータを最小にして、要らない個人情報が入り込まないようにする。漏洩を防ぐ考え方として、流出対策より先にこちらがあります。PIIP は、この考え方を WordPress で実現するためのプラグインです。
PIIP とは
PIIP – PII Protection は、コメントやフォーラムなどに書き込まれた個人情報(PII)を、データベースに保存する前に自動でマスクするプラグインです。
- 処理はすべて自分のサーバーの中で行い、外部のサービスには送らない
- マスクする前の値はどこにも保存しない
- 対応している入口:WordPress のコメント(コメントフォーム、REST API、後からの編集)、ユーザープロフィール、Contact Form 7、wpForo、BuddyPress、bbPress
- 動作環境:WordPress 6.9 以上、PHP 8.2 以上
特徴 1:入る口でマスクする
PIIP は、書き込みが保存される瞬間に中身を調べ、個人情報だけを伏せ字にしてから保存します。表示のときに隠すのではなく、保存されるデータそのものから取り除きます。
試しに、ログインしていない読者として、問い合わせのつもりのコメントを送ってみました(WordPress 7.0、PIIP 1.8.0)。
| 書き込んだ内容 | データベースに保存された内容 |
|---|---|
| お名前:山田 太郎 | お名前:山* 太* |
| 住所:東京都渋谷区神宮前1-2-3 | 住所:東京都*** |
| 電話番号:090-1234-5678(全角) | 電話番号:***-***-5678 |
| メール:taro.yamada@example.jp | メール:t***@example.jp |

コメントの名前欄とメール欄は、返信に使うのでそのまま残します。マスクするのは本文に書き込まれた分です。
ほかにも、次のようなものを見つけます。
- メールアドレス、電話番号(携帯・固定・0120・0570・03(1234)5678 などの形)、住所と郵便番号
- クレジットカード番号(Luhn の検査で本物の番号だけ。注文番号や JAN コードは誤ってマスクしない)、マイナンバー
- 「お名前:」「住所:」「会員番号:」などのラベル付きの連絡先、パスポートや運転免許証などの番号
- パスワード、API キー、設定ファイルの秘密情報(
DB_PASSWORDなど)、秘密鍵 - 全角で入力された数字・記号(マスクしない部分は元の全角のまま)
どうマスクされるかは、PIIマスク チェッカーでその場で試せます。PIIP と同じ処理をブラウザの中で動かしているので、入力した内容はどこにも送られません。

個人情報をあえて公開したい投稿のために、「同意フレーズ」も用意しています。投稿にこのフレーズが含まれていれば、その投稿はマスクしません。
特徴 2:アップロード画像の位置情報を消す(1.8.0)
スマートフォンで撮った写真には、ふつう撮影場所の GPS 座標が記録されています。WordPress は、アップロードされた元画像をその情報ごと保存します。画像の処理に ImageMagick を使うサーバーでは、縮小したすべての画像にも残ります。自宅で撮った写真を載せると、自宅の場所を公開しているのと同じことになりかねません。
PIIP 1.8.0 は、アップロードの時点でこの情報を消します。GPS 座標と撮影者・所有者・シリアル番号を入れた写真で試した結果です(WordPress 7.0、ImageMagick)。
| 保存されたファイル | GPS 座標 | 撮影者・所有者 | シリアル番号 | 機種・撮影日時 |
|---|---|---|---|---|
| PIIP なし・元画像 | 残る | 残る | 残る | 残る |
| PIIP なし・縮小画像 | 残る | 残る | 残る | 残る |
| PIIP あり・元画像 | 消える | 消える | 消える | 残る |
| PIIP あり・縮小画像 | 消える | 消える | 消える | 残る |
- 画像は再圧縮しません。ファイルの大きさも画素も元のままで、該当する部分だけを消します
- 画像の向き、カラープロファイル、カメラの機種、撮影日時は残します
- REST API で公開されるメディアのデータにも、撮影者の名前を含めません
- 対応形式:JPEG、WebP、PNG、HEIC/AVIF
- すでにアップロード済みの画像は、「ツール」→「PII スキャン」で探して消せます

そのほかの更新(1.7.0・1.8.0)
- マスクするコメントの種類を選べる(コメント、商品レビュー、ブロックエディターのノート、そのほか)
- コメント投稿者の IP アドレスを匿名化できる(192.0.2.123 → 192.0.2.0)
- REST API で作られたコメントや、後から編集されたコメントもマスクする
- Abilities API に対応。MCP クライアントや AI エージェントから、生の個人情報を受け取らずにマスクや点検ができる
- セキュリティの修正(特定の連携で、HTML を書き換えられるおそれがあった問題)
すべての変更は WordPress.org の変更履歴で確認できます。ソースは GitHub で公開しています。
日本語で使えるようになりました
プラグイン本体と説明文の日本語訳が、translate.wordpress.org でともに 100% になりました。言語パックも配信されているので、サイトの言語が日本語なら、インストールするだけで設定画面が日本語で表示されます。上の設定画面の画像も、言語パックを入れただけの状態です。
使い方
- 管理画面の「プラグイン」→「新規追加」で「PIIP」を検索し、インストールして有効化する
- 「設定」→「PII Protection」で、マスクする入口と個人情報の種類を選ぶ(初期設定のままでも使えます)
- 「マスクのプレビュー」で、自分のサイトに書き込まれそうな文を試す
- すでに保存されているコメントや画像は、「ツール」→「PII スキャン」で確認してから適用する
気をつけること
- PIIP は技術的な道具です。入れるだけで個人情報保護法や GDPR に適合するわけではありません
- 自動の検出なので、見逃しや、マスクしすぎることがあります。プレビューで自分のサイトの書き込みに合うか確かめてください
- マスクした元の値は残らないので、あとから元に戻すことはできません
まとめ
- 漏洩を防ぐには、流出対策より先に「要らない個人情報を持たない」ことができる
- PIIP は、コメントやフォーラムの書き込みを保存前にマスクする(入る口でのマスク)
- 1.8.0 で、アップロード画像の位置情報と撮影者などの情報を、再圧縮せずに消せるようになった
- 日本語訳が 100% になり、言語パックで日本語の画面で使える
