PHP の HTTP_REFERER に基づくリーチング対策の突破 (stream_context_create)_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:31:26
オリジナル
677 人が閲覧しました

したがって、ホットリンクを防ぐ対策を検討する場合は、HTTP_REFERER の操作を検討する必要があります。 PHP スクリプト内の対応する変数は $_SERVER['HTTP_REFERER'] で、HTTP_REFERER の値が格納されます。

上記のホットリンク対策により対象のURLリソースへの直接アクセスがブロックされているため、それを取得するにはゲートウェイのようなものが必要です。端的に言えば、HTTP ヘッダーをラップした PHP スクリプトを書くことです。

以下は簡単な関数の実装です:

コードをコピー コードは次のとおりです:

function getRemoteFile($url, $refer = '') {
$option = array(
'http' => 配列 (
'header' => "リファラー:$refer")
$context = stream_context_create($option);
return file_get_contents($url, false, $context);
これは比較的単純な関数です。その機能は、Referer を偽造し (stream_context_create 関数を使用)、相手のデータを取得することです (file_get_contents を使用し、allow_url_fopen を有効にする必要があります)。

より「複雑」にしたい場合は、ソケット拡張機能を使用できますが、これについてはここでの説明の範囲を超えています。

さらに、ホスト名を取得するための通常の関数を提供します

コードをコピーします


コードは次のとおりです:

function getHost($url) { $result = preg_match('/^http:/ /([d| w|.]+)//', $url, $matches); if (sizeof($matches) >= 2) {
return $matches[1]} else {
return null;
}
}


はさらに拡張してスクリプトにカプセル化し、たとえば

http://127.0.0.1/proxy.php?url=http://i.am を呼び出すことができます。 /img は、これらのホットリンク対策リンクを取得できます (さらに開発するには、JavaScript を使用してすべての画像リンクを置き換えます)。



http://www.bkjia.com/PHPjc/322994.html
www.bkjia.com

tru​​e

技術記事したがって、ホットリンクを防ぐ対策を検討する場合は、HTTP_REFERER の操作を検討する必要があります。 PHP スクリプト内の対応する変数は $_SERVER['HTTP_REFERER'] で、HTTP_REFER が格納されます...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!