質問: PHPでユーザ個別ページを作ろうと思っています。通常ログイン形式を取ると思うのですが、その煩わしさを省きつつもある程度クローズされたものにしたいと思っています。 例えばMySQLデータベースのidとnameを使って、「http//:○○/page.php?id=5&name=taro」という風にすることができると思うのですが、調べてもでてきません(PHPを始めてまだ2週間ほどの素人なので、ご容赦ください)。さらにmetaタグでnoindex,nofollowにすれば、認証不要でこのURLを知っている人しかアクセスできないようにできると考えています。 その方法についてご存知の方、ご教授いただけませんでしょうか? (参考URLなど教えていただけると幸いです) どうぞよろしくお願いします。
回答: URLを指定することで特定のユーザのページを参照できる仕様ですと、URLを一部書き換えるだけで、第三者が任意上のユーザページを参照できる ことになります。 例) ttp://hogehoge/index.php?id=000001 (悪意のあるユーザ)id=000003番の情報を知りたい ↓ ttp://hogehoge/index.php?id=000003 ←下一桁を書き換え id以外にも、非公開のnameパラメータを付与し、idのパラメータ操作だけでは参照できないようにした場合でも 公開ニックネームから非公開のnameパラメータを予想することで、特定のURLを参照することができます。 ttp://hogehoge/index.php?id=000003&name=???? (悪意のあるユーザ)id=000003番のnameがわからないとアクセスできないな (悪意のあるユーザ)公開プロフィールのニックネームが花子か、それならnameはhanakoに違いない ttp://hogehoge/index.php?id=000003&name=hanako 偶然一致すれば、アクセスが可能 簡略的に認証を実装したいのであれば、pahooさんが提案されているBASIC認証を導入するのが良いかもしれませんが 見た目や認証の挙動が、Webアプリケーションのデザインと上手くマッチしない問題があります。 PHPを始めて2週間程度ということは、まだフレームワーク導入には至っていませんよね? Webフレームワークを活用することでセキュアなWebアプリケーションを比較的短期間で実装することができます。 車輪の再開発を避けるために、認証プラグインなどもありますので、まずは有名どころのWebフレームワークを学習されてはいかがでしょうか