
いつもお世話になっています。
現在ショッピングサイトを運営しているのですが、基となるindex.phpにファイルを読み込み形式をとっています。
* クエリーの種類
* h:指定されたファイルを読み込む
* d:指定されたディレクトリのbody.htmlを読み込む
実際呼び出す際のURL:http://www.****.jp/?d=camp
上記のように入力するとindex.phpにcampフォルダのbody.htmlが読み込まれ表示する仕組みです。
しかしながら最近、http://www.****.jp/?h=http://www.yahoo.co.jp/などURLを直接アドレスバーに入力しサイトとは無関係のファイルを呼び出すユーザーがいて困っています。
サイトのドメイン(今回はhttp://www.****.jp)や指定したファイル以外のサイトから呼び出した場合エラー画面(error.php)を表示させるようなアクセス制限は可能でしょうか?
現在のスクリプトは下記の通りです。
-------------------------------------------------------------
//メインメニューのクエリーを作る
$mainQuery = array(
"home"=>"?",
//表示する
//ルートのHTMLを直接指定していた場合は問答無用で塗り替え
$showedBody = "home.php";
if($_REQUEST["h"]){
$showedBody = $_REQUEST["h"];
-------------------------------------------------------------
どうかお力をお貸し頂けたら嬉しいです。
その他不足のスクリプトなどあれば回答時にご指摘頂ければ補足させて頂きます。
よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
>スクリプトを私自身で書き加えるのは難しいでしょうか?
PHPはコンパイルが不必要なので、スクリプトを修正するだけで簡単に変更できますが、
プログラム経験がまったく無いと、何をどう修正すればいいか解らないと思います。
先の返答にはrequireを無条件で使用しているのではないかと返答しましたが、
実際には、どのように実装されているかは、このサイトの回答者にはわかりません。(もっと情報提供されれば解る可能性もありますが)
つまり、あなたがスクリプトを解析して真の原因を突き止めるだけの、
デバッグ経験をお持ちであれば直せると思います。
PHPは簡単ですしね。
あと、失礼かもしれませんが、「requireにパラメータを無条件で使用」するようなプログラマは、プログラムスキルの程度が知れていますので、
スクリプトが、非常に見にくい可能性があります。
もしあなたが修正するならば、スクリプトを解読するスキルも必要になる可能性があります
私は昔、1関数が2万行のふざけたPHPスクリプトを触らされた事があります。(怒)こんなスクリプトになっていないことを願います。
ご回答ありがとう御座いました。
システムについては専門業者3人掛かりで製作して頂き連絡したところ脆弱部分の修正をして頂けるとことになりました。
また共有サーバーから専用サーバーにしファイヤーウォールやSSLを駆使して外部からのアクセスを一切遮断する方向で話を進めていこうと思います。
ご回答ありがとう御座いました!
No.3
- 回答日時:
そのレンタルサーバ内に、顧客の個人情報やクレジットカード情報など重要な情報は置いていなかったでしょうか。
脅かすようで申し訳ありませんが、もし置いていた場合、それが盗まれた可能性があります。また、requireやincludeを使用していた場合、サーバに不正なプログラムを設置された可能性もあります。
プログラムの開発業者との契約内容次第ですが、納品物のセキュリティ上の欠陥を直ちに修正すること(直ちに修正できない場合、一時的にサイトの全体もしくは一部を止めることも検討)、ログやサーバ内のファイルなどを確認して、どのような不正行為が外部から行なわれたのかの調査、を要求した方が良いと思います。
ご回答ありがとう御座いました。
クレジットカード情報や個人情報は扱っていないため問題御座いませんでした。
現在サイト全体をメンテナンスとし止めています。
不正な内容は一つのファイルに原因があり、ディレクトリ外のファイルを読み出せるため海外にアクセスし高負荷が生じることのみのようです。
No.2
- 回答日時:
hが指定された場合、無条件でrequire_once等にパラメータ(ファイル名)を渡していませんか?
dが指定された場合は、ディレクトリを指定するので、
サーバ内のディレクトリを検索して、
無ければerror.phpを出し、
hが指定された場合も、パラメータで渡されたファイルが
サーバ内に存在するかチェック(ファイル検索)して、
なければerror.phpを出せばよいのではないのでしょうか?
回答有難う御座いました!
>>hが指定された場合も、パラメータで渡されたファイルが
>>サーバ内に存在するかチェック(ファイル検索)して、
>>なければerror.phpを出せばよいのではないのでしょうか?
とても有効なご意見有難う御座いました!
スクリプトを私自身で書き加えるのは難しいでしょうか?
私自身PHPにあまり詳しくなくメインのシステムを外注しています。
自分でできれば!と思っていましたが…なかなか難点がありそうなので一度上記の内容をシステム開発業者と直接相談してみたいと思います。
迅速な回答有難う御座いました!
No.1
- 回答日時:
何故困っているのでしょう?
セキュリティと挙動的に問題が無いのでしたら、それでもいいと思いますが。
事実、このサイトも、直接パラメータを指定したURLを打てばその通りに動作します。
不正な値が入っている場合にのみ弾くのではダメなのですか?
今回の場合、hパラメータはファイルなのですから、指定されたファイルの
存在チェックを行うだけで済むのではないのでしょうか?
必ずあるページから遷移しなければならないという仕組みの場合は
遷移元のページからセッション情報を保持する事で解消されるのではないでしょうか。
この回答への補足
早速回答ありがとう御座いました。
困っている点では直接URLを入力し、海外のPHPを改造するサイトを開く不正なユーザーがおり、レンタルサーバーに大きな負荷をかけているとの報告がレンタルサーバー側よりこの脆弱性を改善するためにサイト内ファイルのみしか読み出せないようよう対応を考えていました。
>>不正な値が入っている場合にのみ弾くのではダメなのですか?
不正な値が入っている場合error.phpを表示させることは可能でしょうか?
私自身PHPに詳しくなくご迷惑お掛けしてしまい申し訳御座いません…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
隣の枝がはみ出してきたら切ってもいい?最もやってはいけないことは?
「隣の木が越境してきて困るが、勝手に切ってはいけないと聞くし…」そう思っている方も多いだろう。実は、2023年4月1日に民法が改正され、この「越境枝」のルールが大きく変わった。 教えて!gooでも「境界から出て...
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セッション関数を使わずにファ...
-
PHP8でWarning:Undefined varia...
-
composerをインストールしたい...
-
PHP8を使うと、大量のWarningが...
-
SplFileObject を利用したとき...
-
MySQLの配置が変わったため、db...
-
重複を防ぐ記述について教えて...
-
PostgreSQLからCSV形式でエクス...
-
PHPでテキストファイルに保存し...
-
phpの imap_search で漢字コード
-
c言語 文字 - '1'+26
-
phpの問い合わせフォームを作っ...
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
HTML PHP ラジオボタンのイベント
-
php でqiitaのサイトにあったフ...
-
PHPの勉強してます。 配列のと...
-
BASIC認証のフォームをデザイン...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
円グラフ描画について
-
phpにて、ipアドレスによる処理...
-
empty($_SERVER['REQUEST_U
-
GPLライセンスについて
-
ステップカウンタ(PHP)
-
3つ以上の論理積は利用可能なの...
-
$_SERVER と $_ENV の違い
-
PHPのif文でその処理を途中で抜...
-
FTPコマンドでディレクトリごと...
-
Subversionのリポジトリの削除
-
【PHP】ページを更新すると勝手...
-
バッチを用いたフォルダの自動移動
-
CFileDialogの最初のディレクト...
-
makefile でファイルをコピーす...
-
フォントの色を変えるには?
-
「クラウドにアップロード」」...
-
拡張子php画像をjpg画像等に変...
-
*.php、*.php3、*.phtmlの違い
-
「クラス関数」「メンバ関数」...
-
.phpと.incファイルの違いはな...
おすすめ情報