サーバーにPHPのリスクとその対策

このQ&Aのポイント
  • PHPのセキュリティ対策として、管理者専用にアクセス制限を設ける
  • HTMLページを生成して一般ユーザーには静的なページを公開する
  • PHPページを一般公開していなければ悪意のある攻撃は起こりにくい
回答を見る
  • ベストアンサー

サーバーにPHPを入れるだけで考えられるリスク

PHPでWEB管理者専用のニュースリリースページ更新フォームの作成を検討しています。 (ページ新規作成・編集と、その更新情報をトップページの新着情報欄でお知らせ。) PHPプログラム自体のXSSなどのセキュリティ対策はもちろんですが、 セキュリティを考慮し、更新フォームは管理者専用にベーシック認証+管理者PCのIPのみ許可するアクセス制限を設けたディレクトリに設置予定です。 さらにセキュリティリスクを下げるべく、更新フォームPHPで入力した情報で HTMLページを生成し、一般ユーザーにはその静的なHTMLのページを公開しようと考えています。 (トップページおよび個々のニュースリリースページも静的HTML。PHPページは管理者ページだけ) 一般ユーザーにPHPページを見せないだけでも、かなり安全かと思いますが この方法で考えられるセキュリティリスクおよび対策は他にどんなものがあるでしょうか? 例えば、 ・管理パスワードの漏洩→頻繁にパスワードを変更する ・IP許可している管理者PCの乗っ取り→ウィルス対策・ログ監視 そもそもサーバーへ不正侵入でもしない限り、PHPのページを一般に公開していなければ、 PHPがインストールされてるだけでは何か悪さをされる可能性はないのでしょうか? PHPは脆弱性が多いという情報はたくさんでてきますが、プログラミングの問題であって XSSやSQLインジェクションなどの対策さえきちんとしておけば、 サーバーにPHPをインストールすること自体にそれほど心配する必要はありませんよね?

  • PHP
  • 回答数3
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • NARH
  • ベストアンサー率82% (88/107)
回答No.1

> サーバーにPHPをインストールすること自体にそれほど心配する必要はありませんよね? インストールすること自体では無いといっていいでしょう。 質問中のPHPを他の言語に置き換えても、得られる回答にさほど大きな違いは無いと思いますよ。 なんだかとてもナーバスになっていますね。 安全性の確保は利便性とはトレードになってしまう場合が多いので、 自分達にとって、驚異となるものは何か?を定義してみてはどうでしょうか? 不必要な対策を講じることにより、やたらと複雑で誰もわからなかったり、サービスとして体をなさなかったりする場合もありますよ。 僕の場合ですが、想定外の入力によって、サービス外のリソースにアクセスできると驚異になるという観点から、 ・入力値で許容するものを明確化する ・必要の無いサービス・プログラムは入れない。 ・外部連携は、必要な範囲で絞る ・作業手順をなるべく簡素化する ・その画面での関心ごとを明確にする。( PHP でいうところの 不要な require, inclde はしない構成にする等 ) ということをシステムに織り込んでいきます。 システムは(関連性を持った)系なので、プログラムだけの対応では穴は塞がらないという意識からです。 # System という単語自体 "系" と訳しますもんね。 上の僕の場合は”誰が、何を”に偏ってます。 ”いつ、どこで”などに制限をかけることで、サービス自体が枯れていく(だれも使わない)状態にならないようにとの配慮からです。 誰も使わないと管理から外れ(忘れ)やすく、それもまた驚異となりうるので。 まぁ状況によってポリシーは変わっていくので、場に合わせた対応を取るのが一番でしょうね。

chudeso
質問者

お礼

ご回答ありがとうございます。とても参考になりました。 サーバーへPHPを導入するにあたって、 「PHPをインストールするだけで脅威になりえるのでは?」という管理者からの懸念に、 私自身も浅学なためサーバーの詳しい部分まではわからず、的確に答えることができずにもやもやしておりました。 ご教示頂いたアドバイスを参考に、対応を検討してみます。大変丁寧なご回答ありがとうございました。

その他の回答 (2)

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.3

ふと思っただけなんで聞き流してください。 >更新フォームPHPで入力した情報で HTMLページを生成し、一般ユーザーにはその静的なHTMLのページを公開しようと考えています。 PHPのページを一般ユーザーに使わせないのなら、ローカルにXAMPPとか入れて、そこで生成したHTMLをアップロードすればいいんじゃないかな~とか思ったり。 まぁ、ネット上のリソース使って生成するから、そういう仕様にしてるんだろうとも思いますけど。

chudeso
質問者

お礼

ご回答ありがとうございます。 ローカルでXAMPP入れたり、マクロを組むなりしてページを生成する方法も検討したのですが、 そこまでするならサーバーのPHPを使ったほうが便利だろうということになりました。 たしかに一般ユーザーにPHPを使わせないのであればローカルで完結させるのも一つの手ですね。

回答No.2

No1さんの回答にほぼ同意です。 心配する必要は限りなくゼロです。 しかしセキュリティに関してはパラノイアであるべき、疑いまくれ、という言葉もありますので、 質問者様の姿勢はとても良いと思います。 それからセキュリティポリシーをある程度定義してそれに従うというのがいいと思います。 明示化されていれば複雑になってもいいはず。 どれくらいのレベルで保つのかについては、やはりバランスです。 それから時たまphpの更新情報・バグフィックスなど追いかけるのもいいですよ。

chudeso
質問者

お礼

ご回答ありがとうございます。とても参考になります。 たしかにセキュリティについては絶対というのが無いので、疑ってかかるのは大切だと思います。 セキュリティポリシーを定義するというのも良さそうですね。一度詳細を検討してみます。 どうもありがとうございました。

関連するQ&A

  • PHPに入門するに当っての準備について

    僕はHTML/CSS/JavaScriptを趣味のレベルでやってきて、 そろそろサーバー側のプログラミング(今回はPHPを選びました)に挑戦したいと思っているのですが、apache等のソフトやセキュリティーについて一切の知識が無く、幾つかご質問させて頂きます。 1. そもそも、apacheやxamppは何処から何処までやってくれるソフトか分かりません。 例えば、 PC1でページを作って同じPCでページを閲覧、 PC1でページを作って、家庭の幾つかのPCで閲覧、 一般(外部)に公開、、、 とした場合、どの段階からapache等のソフトが必要になりますか? 2. 仮に、 ルーターの設定で自分達しかみないはずになった状態でPHPのページを作るとして、 その場合、PHP上のセキュリティー(xss対策とか)をほぼ一切しなかった場合は危険ですか? セキュリティーについて学びきってからでないと、実際のプログラムの書き込みは避けた方が良いのでしょうか? ----- 以上の2点です。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • タグ許可、XSS対策「HTML Purifier」

    >HTMLを許可しつつXSS対策を行えるPHPライブラリ「HTML Purifier」。 >HTMLをちゃんとパースして、XSSに関わる問題のあるタグなどは除去 ▽HTMLを許可しつつXSS対策を行えるPHPライブラリ「HTML Purifier」:phpspot開発日誌   http://phpspot.org/blog/archives/2007/03/htmlxssphphtml.html と書かれているのですが、このライブラリは、現在でも利用して大丈夫なのでしょうか? 2007年時点の記事なので、今では状況が変わっているかもしれない、と思い、質問しました

    • ベストアンサー
    • PHP
  • どのくらいセキュリティ対策が必要か。

    どのくらいセキュリティ対策が必要か。 個人サイトなどで掲示板の様なものを自作して設置する際に、 一般的にどのようなセキュリティ対策を施すのでしょうか。 データベースは用いません。 XSS対策のみで十分でしょうか? 参考にフリーで配布されているいくつかのPHPスクリプトを見ましたが、 どれもXSSやインジェクションあたりしか対策してないように見えたので、 気になりました。 宜しくお願いいたします。

  • PHP、Perl、MySQL他のセキュリティはサーバー側の設定も重要ですか?

    はじめまして。PHPとかMySQLを勉強中の者ですがカテゴリーが相応しく なかったでしょうか?ある程度、ソースが書けるようになりタイトルに あげたようなWEBアプリのセキュリティ問題は個人ユーザーの設定ミス により他の共用ユーザーも巻き添えにして迷惑がかかるというような 事はないのでしょうか?現在PHP+MySQLを入門書を見ながらではありますが ある程度書けるようになり、公開してみたい気持ちはあるのですがSQL インジェクションとかXSSとかのワードを必ずと言って良いほどWEB上 では目にしますが、入門書はあまりセキュリティの事が書かれていない のでちょっと外部公開は控えてます。一応、エスケープやその他の処理 は自分なりに気を遣ったつもりですが自信ありません。 (現在はスペースはロックして外部公開していません) 商用サイトではないので個人情報などは一切ありませんけど、レンタル サーバ会社や他の利用者に損害賠償などされても困りますので戸惑って います。(規約は曖昧ですが故意でないかぎり大丈夫そうです) 現在契約中のレンタルサーバーはあまり有名ではないですが自由度が高く、 PHPのセキュリティ解説HPのOFFにすべき項目もphpinfoで見る限りONに なっていたりするので、ちょっと不安です。php.iniを編集したりSSHが 許可されていないのでサーバーの設定も変えられませんし、コントロール パネルにもそういう設定はありませんです。 質問の趣旨は、、 1、利用者のスペースのみに被害が及ぶのかサーバー全体が被害を受けるのか 2、利用者がいくら気を遣って対策をしても管理者のミス等があれば利用者の スペースにもSQLインジェクション等の被害が及ぶのか この二点です。よろしくお願いします。

  • phpをhtmlのように編集してもよいのでしょうか?

    仕事でWEBページの更新作業をまかされました。 HTMLやDreamweaverでWEBページを作成したことはあるので大丈夫かと思い引き受けたのですが、作成してあるページがすべて拡張子がPHPなのです。 私が作ったことがあるのは拡張子がhtmlのページなのですが、拡張子が違うだけで、修正などは、Dreamweaverでhtmlを編集していた様に作業しても問題ないのでしょうか? メールフォームのように受け渡しのページのみphpというのは経験はあるのですが、前ページphp???なにかメリットなどあるのでしょか? もし、phpでのweb編集が高度ならば、早めに仕事を辞退しようかとも悩んでおります。 よろしくおねがいします。

    • ベストアンサー
    • HTML
  • PHPでサーバー間通信の技術を習得したい

    PHP、MySQLでショッピングカートを独自に作っています。 クレジット決済を導入する際、セキュリティ面から、ブラウザ(フォーム)を介した接続が許可されず、サーバー間で情報を通信しなければならないケースに直面しています。 PHPでそのような技術を習得できる書籍をご存知の方がいらっしゃいましたら教えていただけないでしょうか?

    • ベストアンサー
    • PHP
  • こんにちは。PHPとMySQLで自作ブログを作ろうと試みているのですが

    こんにちは。PHPとMySQLで自作ブログを作ろうと試みているのですが、 セキュリティを意識した中で、HTMLタグの取り扱いに困っております。 プログラム全体の流れとしては、 記事投稿ページ→MySQLに保存→ブログ記事として出力 といった感じです。 例えば、記事投稿ページの<textarea>の中で、 <b>テストテスト</b>といった文があったとします。 XSSを防ぐために、htmlspecialchars()でエスケープすると、 MySQLには、&lt;b&gt;テストテスト&lt;/b&gt; と保存されます。 MySQLから記事に出力したときに、太字となった「テストテスト」ではなく、 「<b>テストテスト</b>」とそのまま表示されてしまいます。 記事の出力時に、html_entity_decode()で戻してやればいいかとも思いましたが、 それでは、そもそもXSSを防げない気がします。 一般のブログサービスでは、どうやってデータベースにHTMLを保存しているのでしょうか? 解決するいい方法があればどなたか教えてください。

    • ベストアンサー
    • PHP
  • phpのXSS対策 どこに問題が?

    phpのXSS対策について質問があります。 あるphpの参考書に以下のような記述があったのですが、理解できません。↓ ---------------------------------------------------------------------------------- ただし、htmlspecialchars()関数でのエスケープ処理は「&」「<」「>」「"」「'」を文字参照に変換するものなので、これらの文字をまったく使わずにJavaScriptのコードを記載できる場所に変数を表示させるようなHTMLを書いてしまった場合は対策できません。 たとえば、以下のような場所に変数を表示する場合です。このようなコーディングをしてしまった場合は、htmlspecialchars()関数でのエスケープ処理はXSSを防ぐことはできません。このような場所に変数を書かないように注意してください。 <a href="<?php echo $input; ?>"> ---------------------------------------------------------------------------------- この記述を書いてしまうとなぜhtmlspecialchars()関数では防げないのでしょうか? よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHP+SQLiteを利用したサイト作り

    友人数人で学校や地域の情報を発信するサイトをつくることになったのですが、 更新するときにいちいち編集するのが大変なので ちょうど勉強していたPHPとSQLiteを利用して ブログのように簡単に投稿できるようにしようと思っています。 PHPを利用してHTMLのフォームからSQLiteに登録する。 というところまでは出来たのですが疑問が浮かびました。 実際にWEB上で公開するときは 見に来た人がSQLiteに接続して情報を引き出す形になると思うんですが、 そういう公開の仕方は正解なのでしょうか。 それとも、なんらかの形で別のファイルに出力して そちらを公開するのが正解なのでしょうか。 サーバへの負荷が心配でこのような疑問が浮かんだのですが 気にしすぎでしょうか? 実際にPHP+SQLを利用されている方たちの意見が聞けたらと思います。 よろしくおねがいします。

    • ベストアンサー
    • PHP
  • フリーのphpフォームを探しています

    phpで出来た商用可能でフリーのフォームを探しています。 お勧めのフォームがあれば教えてください! セキュリティ対策もされているものであれば、ありがたいのです。 ※PHPはあまり詳しくないのですが、色々と聞いたことがあるので… また、CGIではKENT-WEBを使っている人を良く見かけますが PHPで人気のフォームはどれになるのでしょう? よろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう