質問: ### 前提・実現したいこと notshow.phpというPHPファイルがあります。このファイルはリンク元がindex.htmlだった場合のみ表示され、かつ直リンクを禁止し、直リンクされた場合は専用のページにリダイレクトする、という処理を以下のコードをnotshow.phpの頭に記述することで実現してみました。 ### 該当のソースコード ``` //notshow.phpへの直リンク禁止 if (empty($_SERVER["HTTP_REFERER"])) { //リダイレクト header('Location: リダイレクトさせたいページのURL'); } ``` 挙動としては一応意図したとおりに動きました。しかし、このようにすることで直リンクを禁止したとしても、セキュリティ的に他に問題がないのか心配です。 (例えば、この場合ですとリンク元はどこからでもアクセス可能ですよね?(index.html以外にnotshow.phpへのリンクは載せていないので問題ないとは思っているのですが...)) 何か危険な点がございましたらご指摘いただけると非常に助かります_(._.)_
回答: 考えてることをやりたいならリンク元のページでセッションを開始し適当なトークンを埋め込むようにして notshow.phpにアクセスした時にそのトークンを保持していなかったらエラーページにリダイレクトする という感じでやればいいんじゃないでしょうか クロスサイトリクエストフォージェリ対策のような発想ですね 別にセッションでなくてもpostやgetで適切なトークンを投げたときだけリダイレクトしないという対応もできます セキュリティ的にはリンク元にさえアクセスすればnotshow.phpにアクセスできる状態になりますからリンク元へのアクセスをどう制御してるかに依存します