質問: PHPの初心者です。 -質問その1- 私の対応しようとしている方針が、一般的なことか教えてください。そうでない場合、例を示して頂けると非常に助かります。 【採用しようとしている方針】 1.ログイン画面を用意し、予め登録されたログインID・PWであり、『相応の認証が達成できた場合のみ』 遷移先画面で利用していくため、このログインIDを、クッキー変数に格納(8時間有効) また、相応の認証が達成できた場合のみheder関数で、次画面へ遷移。(formのactionは自身を指定) 2.遷移先画面で、先のクッキー変数の内容を取得できれば、当該画面の処理を継続。取得できない場合は上記1.のログイン画面へ遷移させてしまう。尚、この画面からその他画面への遷移も行えるシステム構成を検討。全画面にて、クッキーからのログインID取得(=前回ログインから8時間以上経過していないこと)が達成されなければ1.のログイン画面へ遷移させてしまう。 3.セッション変数の有効期限を変えたり、タグ内にhiddenで記述するのも(ブラウザのソース表示で見える??)、違和感を感じてクッキーが良いのかな??と思いました。 -質問その2- 上記のクッキーを利用した方針を前提に、インターネットの記事を読んでいると、setcookie関数の利用はHTML記述前、という記事ばかりを目にします。 私がやろうとしていることは、ログオン認証が達成できた場合にのみsetcookie関数を動作させることになるので、達成できないような気がして非常に混乱しています。 私の採用しようとしてる方針があながち間違いでない場合、どのように対応すればよろしいのでしょうか? 皆様のご支援をお待ち申しあげております、よろしくお願い致します。
回答: > > 遷移先画面で利用していくため、このログインIDを、クッキー変数に格納(8時間有効) > > > この時点で良くないことはすでについている回答の通りです。 そもそも、ベタなPHPで「Hello world」以上のプログラムを作ろうとすると簡単に脆弱性を作り込んでしまいますし、認証を安全に実装するのはまず不可能です。 Webアプリケーションフレームワークを使うと、認証や基本的なセキュリティをライブラリに任せることができるので、それを使ってアプリを作ることをおすすめします。