• ベストアンサー

PHPソースのセキュリティをみていただきたい

自分で作ったソースをロリポ(PHPver5)にアップしていたのですが、管理者より脆弱性を指摘されました。 どこで脆弱な部分があるか見ていただきたいのですが・・・。 >>view.php <?php // アクセス制限 if(ereg("view.php", $_SERVER["PHP_SELF"])) { header("Location: index.php"); exit(); } // 日付の取得 if(!$input_date) { $query = "SELECT max(modify) FROM " . DIARY_TABLE_LOG; $result = @mysql_query($query, $db); $num_rows = @mysql_num_rows($result); // 記事があれば最新の日付をセット if($num_rows == 1) { $input_date = @mysql_result($result, 0, 0); if(!preg_match("/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/", $input_date)) { $input_date = date("Y-m-d"); } } else { $input_date = date("Y-m-d"); } } // 記事の取得 $query = "SELECT * FROM " . DIARY_TABLE_LOG . " WHERE modify = '{$input_date}'"; $result = @mysql_query($query, $db); $num_rows = @mysql_num_rows($result); // 一覧記事の取得 if($num_rows >= 1) { $row = @mysql_fetch_assoc($result); $title = $row["title"]; $story = $row["story"]; // ナビゲーターの読み込み include("navi.php"); //必要なファイルをインクルード if(!$input_file) { $input_file = "main"; } // 記事の表示 print <<<_EOT_ <div id="main"> <div id="right"><!-- 本文 --> <h2> 最新記事 {$title} </h2> <div class="tex"> {$story} <p>$navi</p> </div> include("./html/" . $input_file . ".htm"); $query = "SELECT * FROM " . DIARY_TABLE_LOG . " LIMIT 10"; $result = @mysql_query($query, $db); for ( $i = 0 ; $i < 10 ; $i++) { $row = @mysql_fetch_assoc($result); $c_title .= '<a href=index.php?date=' . $row["modify"] . '> '. $row["modify"] . ' - ' . $row["title"] . ' </a><BR>'; } print <<<_EOT_ <h2>記事一覧</h2> <div class="tex"> $c_title </div> </div><!-- right --> <!-- left --> <div id="uidform"><!-- サイドメニュー部分 --> $uidform </div> <div id="menu"><!-- サイドメニュー部分 --> $navibar </div><!-- left --> <br style="clear:both"> </div> _EOT_; } else { // 記事がないとき print <<<_EOT_ <div id="main"> <div id="right"><!-- 本文 --> <h2> 最新投稿 {$title} </h2> <div class="tex"> {$ms} <p>$navi</p> </div> _EOT_; $query = "SELECT * FROM " . DIARY_TABLE_LOG . " LIMIT 10"; $result = @mysql_query($query, $db); for ( $i = 0 ; $i < 10 ; $i++) { $row = @mysql_fetch_assoc($result); $c_title .= '<a href=index.php?date=' . $row["modify"] . '>' . $row["modify"] . $row["title"] . ' </a><BR>'; } print <<<_EOT_ <h2>記事一覧</h2> <div class="tex"> $c_title </div> </div><!-- right --> <!-- left --> <div id="uidform"><!-- サイドメニュー部分 --> $uidform </div> <div id="menu"><!-- サイドメニュー部分 --> $navibar </div> <div id="calendar"><!-- サイドメニュー部分 --> {$input_date} $calendar </div><!-- left --> <br style="clear:both">\n _EOT_; } ?> サーバの設定が正しくないと、ソースを抜き取られるようなので念のため載せておきます。 >>.htaccess AddType application/x-httpd-php .php .html AddHandler cgi-script .pl Options FollowSymLinks ExecCGI Includes DirectoryIndex index.php index.html index.htm index.shtml 以上です。 断片的な情報ですが、どこが弱いか、どうすれば直るか見て頂けたら幸いです。素人のため平易であればうれしいです。 事象としては、たまにページが表示されず、URLのみが表示されます。 複数人の同時アクセスによってファイルがこわれたせいだと思います。 その都度、ローカルPCにあるindex.phpをアップしなおし、ページを表示させていました。

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

  • ベストアンサー
  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

>> 断片的な情報ですが、 断片的な情報だけで脆弱性のある部分を特定するのは困難ですね。 たぶん省略されているスクリプトの部分で対策はされているのでしょうが、 もしも、開示されたソフトのままで、かつ、php.iniで register_globals = on と設定しているのなら 少なくともクロスサイトスクリプトの埋め込み可能なところが 数箇所見受けられます。 asuncionさんの意見を私も支持します。

その他の回答 (1)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

>管理者より脆弱性を指摘されました。 >どこで脆弱な部分があるか見ていただきたいのですが・・・。 参考意見としてごらんください。 私だったら、当該の管理者に直接たずねます。