ここの PHP 初心者は、ひどく下手なダウンロード システムに HTTP_REFERER ベースのセキュリティ機能を実装する方法を頭に入れようと、狂ったように頭を悩ませています。
基本的に、ファイル ダウンロード ページの URL の末尾に特定の文字列が追加されている場所があります。この特定の文字列は次のとおりです。
?thanks
それが URL に表示されている場合、ユーザーはそこにあるファイルをダウンロードできます。これはうまく機能しますが、URL 自体に「?thanks」の部分を追加するだけで、ページの「ロックを解除」するのは簡単です。ユーザーが不器用なセキュリティを回避し、プレミアム ファイルに簡単にアクセスできるようにします。
可能であれば、'?pending' を含むページから以前に到達しなかった文字列 '?thanks' を含むページにアクセスしようとすると、ホームページにリダイレクトされるセキュリティ対策を追加したいと考えています。それは私にとって完璧な解決策になります。
わかりやすくするために、一般的なダウンロード前のプロセスは次のようになります。
- ユーザーがダウンロード ページにアクセス: [Web サイト]/download/page/123/
- ユーザーが Recaptcha を完了すると、次の場所にリダイレクトされます: [website]/download/page/123/?pending
- ユーザーが詳細を入力すると、ここにリダイレクトされます: [website]/download/page/123/?thanks
- ユーザーがファイルを受け取る
長くなりましたが、私の変わった要件には理想的ではありません。また、ユーザーは最初に「?pending」を URL に追加し、その後に「?thanks」を追加することで、この問題を回避できる可能性が高いことも知っていますが、それでも、本当に、本当に、際限なく役立ちます。
では、StackOverflow さん、賢明で親切なコーダーで、駆け出しの Web デザイナーを助けてくれる人はいますか? すべての助けに感謝します。乾杯。
編集: ああ、最後に試みられたがひどく爆撃された失敗した方法が 1 つあります。念のため、それが私の目標をさらに説明するのに役立ちます:
if (('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] == wp_get_shortlink().'?thanks') && (isset($_SERVER['HTTP_REFERER']) && preg_match("/".preg_quote('?pending',"/")."/i",$_SERVER['HTTP_REFERER']))) {
echo 'Hurrah!';
} else {
echo 'Oh dear.';
}