更新しないサイトはHTMLに、問い合わせは外部フォームに PHPの穴から学んだ、安全とアクセスの両立

更新しないサイトはHTMLに、問い合わせは外部フォームに PHPの穴から学んだ、安全とアクセスの両立

PHPの重大な穴(PHP2Shell)の対応をしながら、こう考えました。

「記事を更新しないサイトなら、HTMLにしてしまえばいいのでは?問い合わせが欲しければ、Googleフォームのような外部サービスを使えばいい」

そして、すぐに次の疑問がわきました。

「いや待てよ。PHPはサーバー会社が管理している。ということは、レンタルサーバーに置くこと自体がリスクなのか?いくらHTMLにしようが」

順番に整理してみます。

HTMLは、なぜ狙われにくいのか

PHPは、届いたデータを読んで、その場で計算して返す「受付係」です。
受付係に細工した質問を投げると、だまされて言いなりになることがあります。今回の穴がまさにこれです。

HTMLは、すでに刷り上がった「チラシ」です。
サーバーは置いてあるチラシを渡すだけで、何も計算しません。
細工したデータを送っても、読む人がいないので、だませる相手がいません。

レンタルサーバーに置くこと自体はリスクではない

ここが大事なポイントでした。

危ないのは「サーバーにPHPが入っていること」ではなく、「自分のサイトでPHPが動くこと」です。

  • PHPは、サーバーに入っていても、呼ばれなければ動かない
  • .html へのアクセスは、受付がそのままファイルを渡して終わる。PHPは起動しない
  • だから、PHPのファイルが1つもないサイトは、今回の穴の入口になりようがない

レンタルサーバーのままで、HTMLにすれば十分安全です。

PHPのメールフォームを置くと?

ここで、PHPのメールフォーム(無料で配られているものなど)を置くと、話が変わります。

PHPのファイルを1つ置くと、そこが入口になります。

更新しないサイトはHTMLに、問い合わせは外部フォームに PHPの穴から学んだ、安全とアクセスの両立

今回の穴は「アプリのコードが動く前」に突けるとされています。
フォームのプログラムが小さくても、きちんと作られていても関係ありません。フォームのページにアクセスされた瞬間に、PHPが起動するからです。

問い合わせの方法 PHPが動くか ひとこと
Googleフォーム 動かない 無料。見た目は少しGoogleっぽい
formrun・Formspreeなど 動かない デザインを合わせやすい。無料枠あり
LINE公式・メールのリンク 動かない いちばん簡単
PHPのメールフォーム 動く 今回のような穴の入口になる
更新しないサイトはHTMLに、問い合わせは外部フォームに PHPの穴から学んだ、安全とアクセスの両立

記事を書くサイトなら「見せる側」と「作る側」を分ける

WordPressで記事を書き続けたいサイトでも、手はあります。

  • 見せる側:WordPressの記事を、PHPを使わないHTMLに書き出して公開する(書き出し用のプラグインがあります)
  • 作る側:WordPressの管理画面は、自分だけが入れる場所(トンネルの奥など)に置く

これなら、検索にもSNSにもふつうに出て、表にはPHPが出ません。

「SNSのアカウントでログインした人だけ通す」形にすると、ボットは止められますが、Googleの巡回ロボットも入れず、検索から人が来なくなります。アクセスを大事にしたいなら、「見せる側はHTML」のほうが向いています。

HTMLでも残る心配

HTMLも、まったく狙われないわけではありません。

  • サーバーやFTPのパスワードを盗まれて、書き換えられる → 強いパスワード・二段階認証
  • 同じアカウントにWordPressが同居していて、そちらから書き換えられる → 分けて置く
  • 埋め込んだ外部の部品(広告・解析タグ)が乗っ取られる → 部品は最小限に

それでも、表に出ている危ない場所は、PHPのサイトよりずっと少なくなります。

今回のPHPの穴について、WordPressのサイトでまずできることは、こちらにまとめました。

PHPの穴はエンジンにあった レンタルサーバーのWordPressで、自分にできること・できないこと

ブログ

BLOG

PAGE TOP