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

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

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

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

Q&A

解決済

セキュリティー面が心配です。

international
international

総合スコア16

PHP

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

1回答

1グッド

2クリップ

1031閲覧

投稿2022/09/03 20:25

以下のプログラムは掲示板です。
セキュリティー面が心配です。
何かありましたら改善していただけないでしょうか。

他、気になる点がありましたらなんでもいいです。
改善していただけないでしょか

尚 Eメールでの「ログオン画面」の設計でしたが
個人情報と、成り得るので急きょ「好きな映画歌趣味など」
に変更しました。しかし関連するプログラム自体 今ところ email
で動いていますので、後で変更したいと思います。

プログラムですが文字制限をこえましたので以下のURL~ご覧なれます。
http://afurieitohannei.la.coocan.jp/sns/hajimetenoWeb.htm

以上お手数ですが よろしくお願いいたします。

1981225👍を押しています

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/09/09 00:07

こちらの質問が複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

2022/09/04 02:36

こちらの質問が他のユーザーから「問題・課題が含まれていない質問」という指摘を受けました。

m.ts10806

2022/09/03 21:18 編集

以前以下を紹介されていたようですが、全く確認されてないのでしょうか。 安全なウェブサイトの作り方 改訂第7版 https://www.ipa.go.jp/security/vuln/websecurity.html あと「個人情報」を正しく知らない状態で勝手に思い込みで進めてる時点で何もかも知らないんだなという印象しかないです。 もうちょっと「お勉強」してからモノづくりしましょう。一般企業でプライバシーマークなりISMSなりを取得している企業にいれば常識として知っている情報を知らないということになりますからね。 まともな設計になりません。ログイン情報なのに一意にならない項目使ってる時点で仕様がおかしいです。 「質問と回答」だけで解決できる問題ではないです。
m.ts10806

2022/09/03 21:27 編集

また、確か投稿は1万字までできたはずですが、それを超えるようなコードを赤の他人に全部見て全部直してくれって丸投げするにしても配慮が足りなさすぎます。 もっと絞るべきでしょう。 コードだけで見えることはすべてではないですしね。機能設計、非機能設計、サーバ要件など多角的に見る必要があります。 無料で、「質問と回答」という形でおさまるものではないですよ。 本気なら専門家にお金払ってみてもらってください。 でないなら、自分で勉強して最低限の知識は身に着けてから臨んでください。 それに、公開してユーザーをきちんと呼び込んでサービス運用するようなレベルのものを作っているのですか?でないなら、心配するだけ時間の無駄で、もっと技術なり知識なり、まともなものが作れるようになってから気にする内容だと思います。 ちらっとしか見てませんが、オブジェクト指向なし、testとか項目が雑、エラーハンドリングが実行時にない、MySQLにしかない機能を使っている(insert set) 等々、セキュリティよりもっとやるべきことが大量にあるだろ。ちょっと質の悪い入門書の丸写しですか? ってツッコミが先に来ます。 なので、本題に回答するに至らないというのが正直なところ。
international

2022/09/03 22:00

ご指摘ありがとうございます。 ご意見の内容を基に検討したいと思います。 今後ともよろしくお願いいたします。
m.ts10806

2022/09/03 22:16

慣用句レベルのコメントならないほうがいいです。 結果が出てからコメントしてください。 以前の対応から「ただ言ってるだけのコメントだろうな」という感じしかないので。
international

2022/09/03 22:21

どうもすみません。 追伸ですが 値段によりけりですが m.ts10806さんでもいいのですが 「お金払ってみてもらって」 見てくださるところですが、ネット上に公開されているサイトを 探しています。 お勧めのサイトなどがありましたら、教えていただけないでしょうか? 宜しくお願い致します。
m.ts10806

2022/09/03 22:23

サイトじゃないです。セキュリティの専門家へのコンサル依頼という意味です。
m.ts10806

2022/09/03 22:31

ちなみに私は会社員ですので個人で仕事は受けられません。 また「でもいい」レベルで仕事依頼されて、やる人いないでしょ。
1981225

2022/09/04 03:07

すみません、失礼しました。 了解です。 現在検討中です。
m.ts10806

2022/09/04 04:39

同一人物による複数アカウント所持は規約違反です。通報しました。 いずれにしても質問の書き方やコードの書き方、提示の仕方、態度含めて同じなので全く意味はない無駄な行為です。
m.ts10806

2022/09/06 03:14

同一人物による複数アカウント所持は規約違反です。

回答1

4

ベストアンサー

ざっと見てみましたが、「セキュリティ以前の問題」と言わざるを得ません。テストはどの程度されたのでしょうか。
たとえば、パスワードは6文字以上のチェックをしていますが、6文字未満でも登録できてしまいます。その理由は、入力値のチェックをしているtest2.phpを通らないからです。
また、再入力したパスワードの一致も同様の理由でチェックされていません。

test.php の以下の部分ですが、

PHP

1 <p>パスワード再入力<span class="red">*</span><input type="password" name="password2″ style="width:150px"></p>

name="password2 の後ろは全角のダブルクォートになっています。入力値チェックがあれば常にエラーになるはずですが、入力値チェックが走らないので、登録できる状態になっています。

これらをテストするのは、やる気さえあれば簡単です。

  • 6文字未満のパスワードで登録してみる
  • わざとパスワード確認欄に別のパスワードを入力して登録してみる

とくに専門的な知識がなくてもできる内容です。
また、ログアウト処理は何もしていないので、ログアウトした後ブラウザの戻るボタンでログイン状態が再開します。

ログインIDの重複をチェックしていません。同名のログインIDが作れるのは一種の脆弱性です。

有名な脆弱性としては、「セッションIDの固定化」があります。この名前で検索すると記事はいくらでも出てくるので説明は割愛します。

また、POSTパラメータをいったん$_SESSIONにすべて放り込んでいますが、やめるべきです。セッション変数は漏洩しやすいですし、パスワードをセッション変数に登録するということは、「パスワードを平文で保存している」ことになります。

ということで、レビューに掛ける前に、まず自分自身でできるテストは入念にすることをおすすめします。

投稿2022/09/04 09:17

ockeghem

総合スコア11552

javahack, kei344, Maximillion, international👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

international

2022/09/04 21:57

ご回答下さいましてありがとうございます。 大変助かります。 「おっしゃっている」ように 決めたことが ちゃんとできるか?  動作確認をする必要がありますね。 細かくデータを取り改善する。 など まず 自分ができる範囲で色々 試して、ブラッシュアップ することですね 納得です。  手が空き次第 やってみます。 お待ちください。
international

2022/09/05 20:13

今回ご指摘された課題を以下箇条書きにしてみました。 5項目 だと思います。  Q? 1~試したいと思います。 Q? 1: パスワードは6文字以上のチェックをしていますが、6文字未満でも登録できてしまいます。 その理由は、入力値のチェックをしているtest2.phpを通らないからです。 パスワードは6文字以上のチェックをしていますが、6文字未満でも登録できてしまいます。 Q? 2: 再入力したパスワードの一致も同様の理由でチェックされていません。 Q? 3: ログアウト処理は何もしていないので、ログアウトした後ブラウザの戻るボタンでログイン 状態が再開します。 Q? 4: ログインIDの重複をチェックしていません。同名のログインIDが作れるのは一種の脆弱性です。 Q? 5: POSTパラメータをいったん$_SESSIONにすべて放り込んでいますが、やめるべきです。
international

2022/09/05 20:26

試しました。 Q? 1: パスワードは6文字以上のチェックをしていますが、6文字未満でも登録できてしまいます。 Ans: その理由は、入力値のチェックをしているtest2.phpを通らない <p>パスワード再入力<span class="red">*</span><input type="password" name="password2″ style="width:150px"></p>  name="password2 の後ろは全角のダブルクォートになっています。 以下試しました。 -------------------------------------- ニックネーム     ドラえもん 好きな映画歌趣味など ドラえもん パスワード      1 パスワード再入力*   1 ------------------------------------- 以上「パスワード1文字で登録」ができてしまいます。  原因として name="password2 の後ろは全角のダブルクォート・・・だから 以下が 実際使用しているプログラムですが 「全角のダブルクォート」 なっている? 「シングルクォーテーション」みたいな気がします。 -------------------------------------------------------------- 【test2.php】PHPで会員登録フォームにエラーチェック機能を追加する // ★ポイント3★ if (strlen($_POST['password'] )< 6 ) { $error['password'] = 'length'; } 以上が機能していませんね! 次に 【test.php】HTML・PHP・MySQLで会員登録フォームを作る <?php // ★ポイント1★ session_start(); require('dbconnect.php'); if (!empty($_POST) ){ $_SESSION['join'] = $_POST; header('Location: test3.php'); exit(); } ?> <!DOCTYPE html> <html lang="ja"> <head> <title>会員登録をする</title> </head> <body> // ★ポイント2★ <form action="" method="post" enctype="multipart/form-data" class="registrationform"> // ★ポイント3★ // ★ポイント4★ <p>ニックネーム<input type="text" name="name" style="width:150px" value="<?php echo htmlspecialchars($_POST['name']??"", ENT_QUOTES); ?>"></p> <p>好きな映画歌趣味など<input type="text" name="email" style="width:150px" value="<?php echo htmlspecialchars($_POST['email']??"", ENT_QUOTES); ?>"></p> <p>パスワード<input type="password" name="password" style="width:150px" value="<?php echo htmlspecialchars($_POST['password']??"", ENT_QUOTES); ?>"></p> <p>パスワード再入力<span class="red">*</span><input type="password" name="password2″ style="width:150px"></p> <input type="submit" value="確認する" class="button"> </form> </body> </html>
ockeghem

2022/09/05 22:37

テストをした結果、分からないところを別の質問として投稿してください。
international

2022/09/06 19:38

了解です。 助かります。 ありがとうございました。 今後ともよろしくお願いします。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

PHP

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