みなさん、こんにちは!
ブリュの公式ブログ.netにお越しいただきまして、ありがとうございます。
このサイトでは、ITについて特化したサイトを運営しています。
今回は、ウェブサービスを作成するうえで重要となる、リファラーによるphpのアクセス制限を紹介します。
この方法により、phpを含むウェブサービスの盗用と、DoS攻撃というサーバーに過負荷を掛けるサイバー攻撃を防ぐことができます。
必ず設定しておきましょう。
目次
入力フォームからphpを呼び出すときの危険性
入力フォームに入れたデーターからphpを呼び出すときに考えられる危険性について考えます。
phpを含むウェブサービスの盗用
html上に入力フォームがあり、そこからphpを呼び出して処理結果を返すウェブサービスがあったとします。
ウェブサービスの動作は、図のようになります。
その時に、php側にアクセス制限がなければ、入力フォームのhtmlをコピーして貼り付けるだけで、ウェブサービスの盗用ができることがわかるでしょうか。
PHPのコードは自社サーバー内にあります。
しかし、そのPHPは、世界中のだれもがアクセスできるので、入力フォームさえあればだれだって使えます。
この状態は、ウェブサービスの開発コードを無断で使われるほか、自社サーバーに無駄な負荷がかかるため、好ましい状態ではありません。
機会損失にもつながります。
DoS攻撃を受ける(サイバー攻撃の一種)
先ほどの盗用が悪化した場合にはどうなるでしょうか。
悪意ある第三者に入力フォーム付きのhtmlをコピーされ、異常な回数のリクエストを受けたとします。
こうなると、DoS攻撃が成立するので、サーバー負荷が急増し、最悪の場合にはサーバーダウンにつながります。
自分のサイト以外からはphpを動作させないようにする
これらの問題は、自分のサイト以外ではphpが動作しないようにします。
ウェブサイトを見ていると、ユーザー側にはリファラーという公開情報があり、直前閲覧していたページのURLを取得することができます。
PHPへのアクセスがあったときに、そのリファラーをチェックすることで、第三者のサイト上での動作を封じることができます。
イメージとしては次の図になります。
リファラーを判定し、オリジナルサイト以外のコピーサイトからの場合にはブロックします。
特定のサイトのみからphpの呼び出しを許可する方法
アクセス制限を行いたいphpのあるディレクトリに、.htaccessファイルを作成し、以下のコードを書きます。
http:://brionac-yu-yake.net/の部分は、ご自身のサイトアドレスに変更してください。
1 2 3 4 5 6 |
<FilesMatch "\.(php)$"> SetEnvIf Referer "https://brionac-yu-yake.net/" Ref1 Order Deny,Allow Deny from all Allow from env=Ref1 </FilesMatch> |
これにより、ご自身のサイトから呼び出されたphpは実行されますが、第三者のサイトから呼び出された場合には.htaccessがブロックし、403を返すようになります。
これで、サイト上のphpへの入力フォームを含むページが第三者のサイトにコピーされても、自分以外のサイトではphpが動作しないように制限を加えることができました。
これで、ウェブサービスのコピーや、自社サーバーに負担をかけるなどの悪用が行えなくなります。
PHPのセキュリティ 特定サイトのみで動作を許可する方法のまとめ
今回は、PHPを自分のサイト以外では動作しないようにするためのセキュリティについて紹介した。
PHPはサーバーサイドで動作をするため、閲覧者には結果しか見えません。
したがって、動作している家庭が見えないことがメリットとなります。
しかし、PHPに入力データーを渡すコードはhtml上にあるため、その内容をコピーされる場合にも注意が必要です。
この場合には、ウェブサービスの無断利用や、サーバーへの無断アクセスの被害があります。
.htaccessに数行のコードを追加するだけで、サーバー上のPHPの動作を止めることができるので、ウェブサービスを作成する場合には必ず行っておきましょう。
しっかりと、PHPへのアクセスをロックし、第三者に悪用されないように、セキュリティを行うことが大切です。
以上、PHPのセキュリティについて参考になれば幸いです。