質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

2111閲覧

PHP セキュリティ対策 サーバーの公開領域と非公開領域

Masa-Y

総合スコア30

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/05/29 03:02

phpでサーバーに接続する練習をしています。
サーバーの公開領域と非公開領域の区別がわからないので、
教えていただきたいです。
参考書には、
「PDO接続などで用いるホスト名やパスワードなどの重要なデータは、
サーバー上の公開されない場所(公開フォルダより上の階層)
に分けておく必要がある」と、書かれています。

下はエックスサーバのディレクトリです。
イメージ説明
Q1.これでいうとpublic_html以外は非公開領域という認識で良いでしょうか。(こちらの記事も一読しました)
Q2.サーバー接続情報ファイルなどは、この階層にdataフォルダ等を自分で作って、その中に入れておく
このような解釈で良いでしょうか。

一般的な方法などがあれば、教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

Q1.これでいうとpublic_html以外は非公開領域という認識で良いでしょうか。(こちらの記事も一読しました)

ドキュメントルートがpublic_htmlであれば、その認識で正しいです。

Q2.サーバー接続情報ファイルなどは、この階層にdataフォルダ等を自分で作って、その中に入れておく

ケースバイケースです。
そもそもそういった情報をファイルとして持たず、環境変数を使用するケースも多いです。

投稿2019/05/29 03:08

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Q1.これでいうとpublic_html以外は非公開領域という認識で良いでしょうか。(こちらの記事も一読しました)

と、書いてありますね。記事に。
エックスサーバー ○ 「ドメイン名/public_html」以外のディレクトリ

言い方を変えれば「ブラウザから参照できない場所」です。
アクセスできるかどうか試すのは・・・例えばURLにhttp://example.com/../logなど入れてアクセスしてみてください。

Q2.サーバー接続情報ファイルなどは、この階層にdataフォルダ等を自分で作って、その中に入れておく

このような解釈で良いでしょうか。

サーバーが許可していれば作るのも良いでしょうし、許可していないのであれば既に存在しているディレクトリを利用するしかありません。

フレームワークを利用しているのであれば指定のやり方があるのでそれに倣う必要があります。
※もしpublic_htmlと同階層にディレクトリ作れる権限がないのでしたらドキュメントルートを調整する必要があるケースもあります。

自分で作るのであればそれこそ「ご自由に」です。

投稿2019/05/29 03:53

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Masa-Y

2019/05/29 04:02

よくわかりました、ありがとうございました。
m.ts10806

2019/05/29 04:07

理解につながったようで何よりです。 何事も「試してみること」ですね。今回も質問前に試せることはたくさんあると思います。
guest

0

ベストアンサー

Q1はその認識でいいでしょう
試すにはテストディレクトリを作って試してみるといいでしょう。
例えばtest_html をpublic_htmlと同じ階層に作成しpublic_htmlと同じ権限に変更します。

test_htmlの中に適当な画像(test.jpg)を置き、public_htmlの中に <img src="../test_html/test.jpg" /> と書いたtest.htmlファイルを作成します。
エックスサーバでtest.htmlにアクセスして画像に失敗すればpublic_htmlがドキュメントルートになっていると考えていいでしょう。

Q2は別な回答者の通りケースバイケースです。
PHPであれば公開ディレクトリでも一般的にはソースのDLはできないので他者に露見しません。
しかし質問の通り、非公開エリア等に設定ファイルを置きPHP等で読み込むほうがリスク軽減となるでしょう。

投稿2019/05/29 03:33

namda

総合スコア705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Masa-Y

2019/05/29 04:03

よくわかりました、ありがとうございました。
Masa-Y

2019/05/29 04:46

実験してみましたらやはり public_html と同階層の test.html にはアクセスできませんでしたので、public_htmlがドキュメントルートということがわかりました。 またrequire_onceで非公開領域からの情報を取得する事もできました。 うまく活用してリスク対策していこうと思います。 ありがとうございました。
退会済みユーザー

退会済みユーザー

2019/05/29 05:03

> エックスサーバでtest.htmlにアクセスして画像に失敗すればpublic_htmlがドキュメントルートになっていると考えていいでしょう。 これはドキュメントルートの確認方法として適切ではありません。 質問者も誤った確認方法をしてしまっているので、修正してあげて下さい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問