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

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

新規登録して質問してみよう
ただいま回答率
85.46%
セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

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

Q&A

解決済

4回答

4008閲覧

PHPでポートフォリオとして自作したWEBサイトの安全な公開方法やWEBサイト公開についての懸念点を知りたい

OoooOTAKONnnnN

総合スコア4

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

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

0グッド

2クリップ

投稿2020/06/03 18:40

編集2020/06/03 23:59
知りたいこと

現在PHPを使用したWEBサイトをポートフォリオとして作成しています。
今まで個人で一から開発した経験がないのでポートフォリオ作成も初めてです。
ポートフォリオとして作成している目的は採用面接や案件の面談の際に自分のPHPの知識やWEB系の技術力を表すためです。
完成したたらレンタルサーバーを用いて作成したWEBサイトを公開しようかと考えております。

そこで質問なのですが、ポートフォリオとして作成したWEBサイトを安全に公開する方法や自作サイトを公開することについての懸念点を知りたいです。
そしてその回答を元に自作したWEBサイトの公開方法を検討しようと思っております。

自分が作成しているポートフォリオの仕様

サービスの概要としてはユーザー同士が情報を記事を公開・共有しあえるWEBサイトを作成しようとしています(ブログサイトに近いです)。

以下の機能を実装したいと思っております

  • メールアドレスを使用したユーザー登録及びログイン機能(ソーシャルログインも検討中)
  • 記事一覧表示機能
  • 記事詳細表示機能
  • 記事投稿機能
  • 管理ユーザ登録及びログイン機能
  • 画像ファイルのアップロード機能
  • DBテーブルのリレーション管理
  • DBトランザクションの制御機能
  • ページネーション機能

仕様は以下です

  • PHP 7.3.1
  • CSS3/HTML5/Javascript
  • Apache 2.2.34(Unix)
  • MySQL 5.7.25
  • フレームワークは使用していません
ネットで見かけたポートフォリオ公開方法

レンタルサーバーを用いて自作したWEBサイトを誰でも見られる状態で公開されている事例が散見されました。

ポートフォリオ公開の懸念点とその対策

例えば、公開したWEBサイトにメールアドレスを用いたユーザー登録/ログイン機能がある場合、その機能にセキュリティ脆弱性がある場合、下手したら登録されているユーザー情報(個人情報)が流出する可能性があるため、
誰でも見られる状態で公開するべきではないと個人的に思ったのですが、そういったセキュリティ面での危険性を回避する方法があったりするのでしょうか?
(このユーザー登録/ログイン機能の例であればメールアドレスを使用せずにユーザーIDを使うか、ソーシャルログインを使うとか?)

これまで調べて見てきた個人で作成したポートフォリオの事例では大体が誰でも見られる状態で公開されていて、メールアドレスでの登録など個人情報を扱っているものが多かったので、そういったWEBサービスを公開されている方々はそういったリスクを承知で公開しているのか、それともそういったリスクを回避する方法があるのか気になりました(それかセキュリティ対策に相当自信があるとか、、、?)。
もしそういったリスクを回避する方法があるのなら、今回の「自作したWEBサイトの安全な公開方法を知りたい」という質問の回答につながると思いますのでご教示いただきたいです。

もし、WEBサイトを誰にでも見られる状態で公開する以上そういったリスクは少なからずあるため
自作のサイトのセキュリティに相当自信がない限りは誰でも見られる状態で公開すべきでないということであれば、
見せたい人にだけポートフォリオを限定公開する安全な方法を知りたいです。
自分の持っている知識の中ではBasic認証を用いれば自分が見せたい人だけに公開ができるので良いかなと思いましたが、他にも方法がございましたらぜひご教示いただきたいと存じます(例えばWEBサイトのポートフォリオを投稿するWEBサービスがある、等)

あとは作成したWEBサイトの機能によって公開することに対するリスクも変わると思うので、こういった機能しかないサイトなら誰でも見られるように外部に公開してもリスクは少ないなどもありましたらご教示いただきたいです(例えば、画像アップロード機能があるようなサイトを公開するのはセキュリティ的にかなりまずいけど、簡単な掲示板サイトみたいなものなら公開してもそこまで問題ない、等)。

長くなってしまいましたが、よろしくお願いいたします。
ご指摘ございましたらすぐに修正させていただきます。

調べたこと

・teratailで「ポートフォリオ」で検索 → 自分の知りたいことが書かれている質問は見つかりませんでした
・「ポートフォリオ 公開方法」「ポートフォリオ セキュリティ」など色々とググった → ポートフォリオはレンタルサーバーを借りて公開するということが書かれているくらいでセキュリティリスクに関する情報は得られませんでした

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

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

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

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

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

kei344

2020/06/03 18:44

「懸念点」にある「WEBサイト セキュリティ」でも検索して調べてみてはいかがでしょう。
OoooOTAKONnnnN

2020/06/03 18:55

コメントいただきましてありがとうございます。「WEBサイト セキュリティ」でも検索して調べてみました。 やはり作ったWEBサイトのセキュリティに自信がない限りは公開すべきではないという感じですかね。 もしそうであればポートフォリオとして公開されている全てのサイトはそういったセキュリティリスクを理解した上で公開しているという認識で合っていますかね。 それかセキュリティリスクを減らすWEBサービスか何かを使用しているなど僕の知らない何かを使っているのか、そういったものを知りたくてこの質問を投稿させていただきました。
m.ts10806

2020/06/03 22:21

タグに「Webサイト」があります。 「セキュリティー」もあります。
m.ts10806

2020/06/03 22:23

PHPで、なら「PHP」もつけるべきかと。 オフトピでもないので「teratail」のほうがタグとしては不適当かと思います。 むしろ得られたい知見をもった人を弾くタグ付けになってるかと
m.ts10806

2020/06/03 22:25

あと、「例えば」ではなく、具体的にそのポートフォリオで作ろうとしているアプリケーションの仕様を提示された方が良いです。 既にあるように具体的な情報がほとんどないのです。質問者だけが持ってる情報が多すぎます
Zuishin

2020/06/03 23:43 編集

> (トピック外の質問は「teratail」タグを付けるのが良いとteratail内の質問のコメントで拝見したためその方法で質問していますがteratail公式としてルールではないことは認識しています。しかし内容的にteratailで質問するのが有益と判断しましたのでteratailにて質問させていただきました。) オブラートをはがすと次のようになると思います。 > teratail で質問すべきでない質問でも taratail タグをつければ質問してもよいと他の質問のコメントで見た。独自ルールまたは拡大解釈であると認識しているが、ここで質問するのが一番自分の利益になるので、これを口実にする。 これには大きな誤解があります。なんでもかんでも teratail タグをつければ良いのではなく、「teratail に関する質問ならばプログラミングに関係なくてもしても良い」と書いてあったのだと思います。 この質問自体が適切かどうかまでは言及しませんが、teratail に関係ないため、teratail タグは適切ではありません。タグを選択し直してください。また、同様の誤解が広まるのを防ぐため、該当する文言は質問から削除してください。
OoooOTAKONnnnN

2020/06/03 23:45 編集

> タグに「Webサイト」があります。 > 「セキュリティー」もあります。 > この質問自体が適切かどうかまでは言及しませんが、teratail に関係ないため、teratail タグは適切ではありません。タグを選択し直してください。また、同様の誤解が広まるのを防ぐため、該当する文言は質問から削除してください。 大きく認識を誤ってしておりました、申し訳ございません。 オフトピックであるという勝手な判断もしてしまいました。 「前置き」を削除したしました。 また、タグを修正いたしました。 お手数ですがご確認いただけますと幸いです。
OoooOTAKONnnnN

2020/06/03 23:47

> あと、「例えば」ではなく、具体的にそのポートフォリオで作ろうとしているアプリケーションの仕様を提示された方が良いです。 > 既にあるように具体的な情報がほとんどないのです。質問者だけが持ってる情報が多すぎます おっしゃる通り自身の作成しているポートフォリオについて記載しておりませんでした。 誠に申し訳ございません。 「自分が作成しているポートフォリオの仕様」について追記いたしました。 お手数ですがご確認いただけますと幸いです。
Zuishin

2020/06/03 23:48

質問の編集を確認しました。他の同様の誤解あるいは曲解をする人のためにコメントは残しておきます。
m.ts10806

2020/06/03 23:54

「テスト機能を実装」とは具体的になんでしょう。 なにをテストするのでしょう。 PHPUnitのコードでも公開するのですか?
OoooOTAKONnnnN

2020/06/04 00:01

> 「テスト機能を実装」とは具体的になんでしょう。 > なにをテストするのでしょう。 > PHPUnitのコードでも公開するのですか? コメントいただきましてありがとうございます。 こちらは各関数についてのPHPUnitを実装しようと思っております。 ただサービス概要として載せるものではありませんでしたので、削除いたしました。 サービスとしての機能ではありませんが、もしコードを公開する場合はPHPUnitのコードが目に触れる状態になると思います。
m.ts10806

2020/06/04 00:04

ポートフォリオなら結局データも実態である必要はないので、「個人情報の流出」よりも「自身のサイトを侵されない工夫」だけかなと思うんです。 まあ結局は「どういうところに対して」「なにを」アピールしたいかによるんですよね。 絶対こうってのはありません。 アピールする先によって変えられる柔軟さの方が大事
OoooOTAKONnnnN

2020/06/04 00:31

> ポートフォリオなら結局データも実態である必要はないので、「個人情報の流出」よりも「自身のサイトを侵されない工夫」だけかなと思うんです。 たしかにダミーデータで構成されたサイトであれば「個人情報の流出」は防げますね!謎に実データに拘っていた自分がいたためハッとさせられました。 ということであれば私が本当に知るべきは「自身のサイトが侵されない工夫」の方ですね。 この工夫は「WEBサイト セキュリティ」で検索したら出てくるようなセキュリティリスクについて対応していく形が良さそうですかね。 > まあ結局は「どういうところに対して」「なにを」アピールしたいかによるんですよね。 > 絶対こうってのはありません。 > アピールする先によって変えられる柔軟さの方が大事 たしかにそうですね、アピール先によってどういったアプローチをするのか変わってくるためそこの柔軟さが非常に大事になってきますね。 貴重なご意見、誠にありがとうございます。
guest

回答4

0

ベストアンサー

追記欄より引用します

やはり作ったWEBサイトのセキュリティに自信がない限りは公開すべきではないという感じですかね。

はい。
適切な対策の取れていないサイトは、他者に迷惑をかけるので、公開するべきではないです。
識者がちょっと触っただけで問題が出てくるサイトは、「公開した事自体」が大きなマイナス評価になります。

もしそうであればポートフォリオとして公開されている全てのサイトはそういったセキュリティリスクを理解した上で公開しているという認識で合っていますかね。

公開自体はできてしまうので、必ずしも理解しているかどうかは不明です。
Qiita でも「サービスを公開した!」って記事に、XSS レベルの指摘が入っていたりするので、公開してしまう人はそれなりにいると思います。

ただ、理解していない場合、相応のリスクを抱えることになります。
個人情報以外にも、踏み台とかも結構まずいです。

以下、質問より

ポートフォリオとして作成している目的は採用面接や案件の面談の際に自分のPHPの知識やWEB系の技術力を表すためです。

上記の認識であれば、公開サイトを静的サイトとすることでリスクを相当軽減させることが可能です。動的かつ登録が必須なデモサイトが必要であれば、ダミーユーザ(事前に適当なプロファイルで作成したユーザ)を評価者に伝えることで登録していただかなくても確認できるようにすればよいかと。

参考:
初学者が手を出すべきでないシステム
4.面白そう!で学習教材(サンプルシステム)を選ぶな!

投稿2020/06/03 23:03

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

OoooOTAKONnnnN

2020/06/04 01:46 編集

ご回答いただきまして誠にありがとうございます。 > はい。 > 適切な対策の取れていないサイトは、他者に迷惑をかけるので、公開するべきではないです。 > 識者がちょっと触っただけで問題が出てくるサイトは、「公開した事自体」が大きなマイナス評価になります。 やはりそうなのですね、、、 確かに問題あるサイトを公開してしまったら逆効果になりかねませんね、、、 > 公開自体はできてしまうので、必ずしも理解しているかどうかは不明です。 > Qiita でも「サービスを公開した!」って記事に、XSS レベルの指摘が入っていたりするので、公開してしまう人はそれなりにいると思います。 > ただ、理解していない場合、相応のリスクを抱えることになります。 > 個人情報以外にも、踏み台とかも結構まずいです。 サイト自体を悪用されてしまう可能性もあるということですね、、、 実装している機能にも夜とは思いますが動的サイトを作成して公開するということは想像以上にリスクがあり、ハードルの高いことなのですね、、、 >上記の認識であれば、公開サイトを静的サイトとすることでリスクを相当軽減させることが可能です。動的かつ登録が必須なデモサイトが必要であれば、ダミーユーザ(事前に適当なプロファイルで作成したユーザ)を評価者に伝えることで登録していただかなくても確認できるようにすればよいかと。 私が作成したいサイトは「動的かつ登録が必須なデモサイト」であるためダミーユーザを用意することが有用そうですね。 参考のリンクも拝読させていただきました。ありがとうございます。 動的サイトを作って公開するのであれば掲示板サイトが良さそうですね。SESSIONについてもしっかり学ぼうと思います。 動的なサイトを公開する場合は、リスクをしっかり理解してセキュリティに対する知識も十分についてその対策を行っていないといけませんね(他者に迷惑をかけたり自分の首を締めたりしかねない)。 まだまだ私は初学者であるため、作成したデモサイト公開する際は実データを使用せずダミーデータのみを扱い、ユーザー登録処理やアップロード機能など初学者が扱うにはセキュリティの危険性がある処理などは実装しないようにしておこうかなと思います。 非常に参考になりました。貴重なご回答、誠にありがとうございます。
guest

0

こういった機能しかないサイトなら誰でも見られるように外部に公開してもリスクは少ないなどもありましたらご教示いただきたいです

それこそ、静的HTML+JavaScriptだけで作ったサイトなら、専用の公開手法(GitHub PagesやS3など)を使うことで、サーバサイドを全く考えずに公開できます。

(ポートフォリオサイトである以上、「自分の技能」も示すものかと思いますが、示したい技能はどういったものなのでしょうか)

投稿2020/06/03 22:34

編集2020/06/03 22:40
maisumakun

総合スコア145208

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

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

OoooOTAKONnnnN

2020/06/03 23:51

おっしゃる通り自身の作成しているポートフォリオ(「自分の技能」として示したいもの)について記載しておりませんでした。 誠に申し訳ございません。 「自分が作成しているポートフォリオの仕様」について追記いたしました。 こちらが「示したい技能」に当たります。 お手数ですがお時間ございましたらご確認いただけますと幸いです。 > それこそ、静的HTML+JavaScriptだけで作ったサイトなら、専用の公開手法(GitHub PagesやS3など)を使うことで、サーバサイドを全く考えずに公開できます。 こちら眼から鱗でした。HTML+JavaScriptだけで作った静的サイトであればこういった方法があるのですね!ありがとうございます。 ちなみにHTMLとJavaScriptとPHPを使用した場合に、そういった方法はございますか?
kyoya0819

2020/06/04 00:53 編集

> ちなみにHTMLとJavaScriptとPHPを使用した場合に、そういった方法はございますか? PHPはサーバーサイドの言語なので、サーバーレスは不可能かと。 最近のサーバーレスの有名な事例は、東京都の新型コロナウィルス関連のサイトですね。 https://stg-covid19-tokyo.netlify.app/ (ステージングのものです。本番はサーバーレスかは知りません。
OoooOTAKONnnnN

2020/06/04 04:19

ご回答いただきましてありがとうございます。 > PHPはサーバーサイドの言語なので、サーバーレスは不可能かと。 あくまでサーバーレスの静的なサイトの場合には専用の公開手法(GitHub PagesやS3など)が有効ということですね、ありがとうございます。 > 最近のサーバーレスの有名な事例は、東京都の新型コロナウィルス関連のサイトですね。 最近のサーバーレスの事例をご教示くださり誠にありがとうございます!是非是非参考にさせていただきます。
guest

0

よその事例を挙げてるだけで質問者自身が作っているどこのどんな処理に具体的にどんな懸念を抱いてるのかサッパリ分かりませんが
その用途だったらhttpsにしてベーシック認証でもかけといて面接の時か書類送付の時に認証情報教えれば?

追記

作りたい機能の列挙なので回答も手抜きになりますが、作ってからOWASP ZAP使って検出された脆弱性の名前をグーグル先生で調べて対応するのが良いでしょうね
それから技術者(経験者)募集でセキュリティ甘いプログラムを見せたらアウトでしょうが、プログラム一年生として雇おうって会社ならまずはシステムを一通り作れたかを重視して見ると思いますけどね
※OWASP ZAPの対応で全てだとは思わないで下さい

改めて言いますがhttpsにしないならベーシック認証ダメですよ

投稿2020/06/03 21:02

編集2020/06/04 01:59
hentaiman

総合スコア6426

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

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

OoooOTAKONnnnN

2020/06/03 23:55

おっしゃる通り自身の作成しているポートフォリオについて記載しておりませんでした。 誠に申し訳ございません。 「自分が作成しているポートフォリオの仕様」について追記いたしました。 お手数ですがお時間ございましたらご確認いただけますと幸いです。 こちらが私の実装したい昨日の一覧でございます。 この処理でメールアドレスを使用した登録/認証処理、ファルのアップロード処理について悪用される懸念を抱いております。 > その用途だったらhttpsにしてベーシック認証でもかけといて面接の時か書類送付の時に認証情報教えれば? httpsにしてベーシック認証する方法は有効そうですね、貴重なご意見ありがとうございます!
OoooOTAKONnnnN

2020/06/04 03:30

> 作りたい機能の列挙なので回答も手抜きになりますが、作ってからOWASP ZAP使って検出された脆弱性の名前をグーグル先生で調べて対応するのが良いでしょうね 作る前に事前に知りたい内容であるため作りたい機能の列挙で情報として十分と思ったため手抜きのつもりはありませんでしたが、回答者への配慮が足りなかったみたいです。気付きが浅くて誠に申し訳ございません。 作ってからOWASP ZAP使って検出された脆弱性について対応していこうと思います。OWASP ZAPの対応で全てに対策できるわけではないということを肝に命じておこうと思います。 > 改めて言いますがhttpsにしないならベーシック認証ダメですよ 承知いたしました。助言いただきましてありがとうございます。
hentaiman

2020/06/04 05:59

配慮はともかく、作りたい機能を列挙するだけだと多過ぎてまともに回答に書いてられないんですよ メール登録に絞って考えてみてください ユーザー情報の受付、確認、DBなどへの登録、メールの実在確認メールの送信、メールの認証、ログイン と軽く思いつくだけでこんだ細分化出来るんですよ なのでどこを心配してるのかわからないし全部予想で答えるのはQAではやってられないのでこう言う回答なんです 手抜きとは言え十分役に立つ情報だとは思うのですが…
OoooOTAKONnnnN

2020/06/05 00:59

回答する側への配慮が足りなかったため作りたい機能を列挙してしまいました、申し訳ありません。 初学者でありどんな処理でどんな危険性があるのか自体がわからなかったため抽象的な全体的な質問になってしまいました。 手抜きの回答と仰っておりましたが、私はご回答が手抜きとは思いませんし、有益な情報をいただけて感謝しております。ご回答くださり誠にありがとうございます。
guest

0

サイト自体を見たところで実力がはかれるか微妙なところはあります。特にサーバーサイドの仕組みをいれてる場合はコードか見れませんから。
公開するのは静的でも済む自己紹介サイト程度にとどめ(お問い合わせ機能もできれば外部のもの。簡単ではないが作るならきちんと考慮して)、実際のコードはGithubなどにアップし、就職活動などで利用する場合はURLだけ送るのが良いでしょう。
企業にはよりますが、書類審査でソースコードの提出が必須のところもあります。そういうところはサイトだけ見ても判断してくれないので、公開できる場所に置かれた公開できるコードが必要ですし、それで実力がはかれます。
他のユーザーからのフィードバックも期待できます。

投稿2020/06/04 00:01

m.ts10806

総合スコア80857

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

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

OoooOTAKONnnnN

2020/06/04 04:15

ご回答いただきましてありがとうございます。 公開するなら静的でも済むサイト程度にとどめるのが良いこと、コードを提出する際のおすすめな方法など貴重な情報をご教示くださり誠にありがとうございます。 動的なサイトを公開することの危険性を認識できました。 ポートフォリオ公開の際は様々なことを理解した上でかなり気をつけた上で行おうと思います。
m.ts10806

2020/06/04 05:14

結局はアプローチしたい先へのアプローチ方法次第です。あとなにをアピールしたいか。 公開してしまうと全世界からアクセス可能になるわけですしね。 レイアウトも込みで見せたいなら「サンプルサイト」と常時表示してデータは保存しないとか、メールも送信しないとか、「ユーザーからの入力を受け付けてもどこにも使わない」ような工夫いれるとか、 ショッピングサイトなら決済しないとか まあそれも、やり方次第です。 ベーシック認証を挙げられてますが不十分ですし、ログイン必須にしても、教えた先に守秘義務を講じなければフリーになります。(さすがに企業なら守るでしょうけど) 「ポートフォリオ」=「Webサイト」ではないということと、様々なアプローチ方法を持っておくことは必須ですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問