私が理解している限り、答えはノーです。少なくとも安全な方法ではありません。src
サーバーの場合、ページがタグのものであるためにページを呼び出すブラウザと、ブラウザ<img>
にURLを入力するだけのブラウザとの間にほとんど違いはありません。
また、どのような問題を回避しようとしているのかもわかりません。誰かがあなたのキャプチャをその周りのページなしで見ることの問題は何ですか(彼らが本当に見たかったのなら...)。
いくつかのアイデアは、それが形式になっていないのを見るのを難しくすることです:
- HTTP_REFERERを確認します。一部のウイルススキャナーとインターネットセキュリティパッケージもHTTP_REFERERヘッダーを強制終了するため、これらのユーザーはキャプチャを表示できなくなります。
- 上部のopcaptcha.phpでいくつかのURLパラメータを確認します(たとえば、captcha.php?secret = 123456789の場合にのみアクセスを許可します)。あなたのform.phpページであなたは秘密を知っていますが、他の人は(理論的には)知りません。時間の経過とともにシークレットを変更できます:(
$secret = md5($salt . strftime("%Y%m%d%H%M"));
)次に、captcha.phpで、シークレットが今分か直前のシークレットかを確認します($now = time(); $_REQUEST["secret"] == strftime("%Y%m%d%H%M", $now) || $_REQUEST["secret"] == strftime("%Y%m%d%H%M", $now - 60)
)
- form.phpのリクエストごとに新しいランダムシークレットを生成し、captcha.phpで確認します(シークレットが生成されたら保存し、使用したら削除するにはmemcached(または同様のもの)が必要です)。
- form.phpを実行するときは、を設定
$SESSION["captcha_ok"] = 1;
し、captcha.phpで実行します。if (!$SESSION["captcha_ok"]) {show_error();} else {$SESSION["captcha_ok"]=0; etc....
しかし、繰り返しになりますが、これらの方法のいずれも、フォームなしでキャプチャを表示することを本当に望んでいる人々を実際に妨げることはありません。