![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
php初心者&ど素人です
勉強のためにphpとmysqlで簡単なログイン機能を作ってみようと思いました
しかし、Locationでページ移動したときのセッションがセキュリティ的に安全なのかわかりません
ログインフォームのlogin.phpから自分自身に送信、ログインできたらセッションを付けてから
header("Location:hoge.php");でhoge.phpに飛ばしています
ログインした後のhoge.phpページではログイン確認をセッションidがあるかだけ確認しています
セッションidがなかったらログインページ戻す
if(!$_SESSION['id']){
header('Location: login.php');
exit();
}
質問1
セッションidは表示されている誰でも見れるidなのでセキュリティ的にまずいですか?
簡単にセッションのっとれるもんなんでしょうか?
質問2
一般的にはどうやているのでしょうか?
ログインページ全て(例えば編集画面とか会員情報とか)にmysqlから暗号化されたパスワードを取得して、それをセクションに入れて、また、mysqlからパスワードと照合したりしてるんでしょうか?
よろしくお願いします
No.1ベストアンサー
- 回答日時:
>セッションidは表示されている誰でも見れるidなのでセキュリティ的にまずいですか?
>簡単にセッションのっとれるもんなんでしょうか?
「表示されている」とはどういう意味でしょうか?Cookieに格納すれば少なくともhttpリクエストのデータを覗かれない限りはわかりませんよね。
なお(データを覗かれている可能性も考慮して)セッションIDは必要に応じて定期的にregenerateするのが一般的です。
http://php.net/manual/ja/function.session-regene …
>一般的にはどうやているのでしょうか?
>ログインページ全て(例えば編集画面とか会員情報とか)にmysqlから暗号化されたパスワードを
>取得して、それをセクションに入れて、また、mysqlからパスワードと照合したりしてるんでしょうか?
ログインしているユーザIDをセッション変数で持ち回るくらいでしょうか・・・。わざわざ毎回照合したりはしません。
回答ありがとうございます
表示されているとは会員の一覧を表示で会員番号が表示されています
それをセッションidとして使っているためです
そもそもセッションidは皆さんはどうやって作っているのでしょうか?
やっぱりランダムな数字みたいにして作っているのですか?
No.4
- 回答日時:
HTTP1.1ではLocationヘッダで相対URLを指定することは禁じられています。
HTTP1.0でも可能な限り(個人的には)絶対URLで書くべきだと思います。
なお、 'Location: http://..../login.php' は正確に入力してください。
半角ペースのあけ方がおかしかったりすると正常に遷移しない可能性があります。
PHPからMySQLに接続する際に注意すべき点をまとめているのでこちらをご覧ください。
http://qiita.com/mpyw/items/b00b72c5c95aac573b71
以下は少しagunuzさんの回答と重複しますが再確認のために。
・$_SESSION['id'] が定義されているかどうかはisset構造でE_NOTICEを発生しないようにしてチェック。
・セッションの乗っ取りに関して http://qiita.com/mpyw/items/8f8989f8575159ce95fc
・ログインが終わった後はパスワードを保持する必要はないです。会員IDのみで十分です。SQL文を発行する際に「WHERE id = 会員ID」のようにします。
No.3
- 回答日時:
>表示されているとは会員の一覧を表示で会員番号が表示されています
>それをセッションidとして使っているためです
会員番号は$_SESSION['id']という『セッション変数』に格納しているだけでは?
セッションIDはsession_start()すれば、自動的に割り当てられます(session_regenerate()すれば新しいセッションIDが割当て直される)。
http://php.net/manual/ja/function.session-start. …
下記のスクリプトで、セッションIDが割り当てられるのを確認してください。
<?php
session_start();
print session_id();
<?php
session_start();
print session_id();
上のコードで自動的に割り当てられてるのを確認しました
それで自分的に想像していたのがログインしたときにセッションidに入れて、ログインを判定できるようにすればいいのでは?と思ったのですが
<?php
session_start();
$_SESSION['id'] = session_id();
googleで検索して調べてみたらフォームから直接postされたidを代入していました
え?session_id()は利用しないの?と思ってしまいました
頭こんがらがっています
どうやるのが正しいのでしょうか?
検索して調べたログイン後のチェックphp(コピペで検索できるとおもいます)
<?php
session_start();
//パラメーター取得
$id = $_POST['id'];
$password = $_POST['password'];
//簡易ログイン
if ($id == "yamada" && $password == "pass") {
//ログイン成功
//セッション ID の振り直し
session_regenerate_id(true);
//セッションに値を格納
$_SESSION['id'] = $id;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPのセッション有効期限について 5 2023/06/14 12:40
- PHP 「ログイン機能を持たせる」説明が気難しいです。 2 2022/10/11 02:59
- PHP ここで言うトークンの意味を教えてください。 3 2022/08/24 03:03
- MySQL 「掲示板のログイン画面」はPHP~MySQLに「データベース認証のシステム」方式です。 1 2022/09/27 05:00
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- PHP php ログイン 1 2022/11/01 00:24
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セッション変数と配列
-
セッションとデータベース
-
phpでcookieがうまく保存されない
-
Yahoo! JAPAN IDを新規取得でき...
-
Dosブロンプトでtabを出力したい
-
「取得先」という表現について
-
shシェルスクリプト 空白行の...
-
バッチファイルでpingの結果を...
-
アップロードしたファイル名に...
-
wordの差し込み印刷で文字...
-
Windowsのsetコマンドでの小数...
-
積立投資してます。現在平均取...
-
各クライアントマシンのログイ...
-
【C#】DataGridViewの最大列数...
-
VBAでPDFのアクティブページ番...
-
オブジェクトの中身の判定(PHP)
-
★お手上げ状態です。助けてくだ...
-
表示している画面サイズの取得方法
-
DTOとEntityの差は何ですか。
-
C言語でシステム日付との差を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
PHPのセッション有効期限について
-
セッション変数にパスワードを...
-
複数のサーバで運営する場合の...
-
ログインしたら他からログイン...
-
ブラウザを閉じた後もセッショ...
-
セッションを維持したまま、サ...
-
PHP SESSION変数を複数使用でき...
-
session_start()で生成されるセ...
-
HTTPヘッダー内での順番などに...
-
「ログイン機能を持たせる」説...
-
session_regenerate_id
-
Sessionの上限について
-
初歩的な質問 セッション管理に...
-
$_SESSIONと、POSTやGETの違い
-
ログイン画面をはさんだ後、自...
-
セッション変数の命名規則
-
複数ページでセッションを使わ...
-
セッション ID とセッション名...
-
セッションのスコープ(有効範...
おすすめ情報