この記事では、主に PHP でのホットリンク対策の方法を紹介し、PHP でのホットリンク対策に関連する関連技術と具体的な実装テクニックを例の形式で分析します。 :
$_SERVER ['HTTP_REFERER']
$_SERVER['HTTP_REFERER']
的获取情况
注意 $_SERVER['HTTP_REFERER'] 并不一定总能获取到,只有在以下情况下才能获取到:
一、能够取到HTTP_REFERER的情况为以下几种:
1.直接用
2.用Submit或提交的表单(POST or GET)
3.使用Jscript提交的表单(POST or GET)
二、不能取到的情况有以下几种:
1.从收藏夹链接
2.单击”主页”或者自定义的地址
3.利用Jscript的location.href or location.replace()
4.在浏览器直接输入地址
5.<%Response.Redirect%>
6.<%Response.AddHeader%>或转向
7.用XML加载地址
strrpos
函数讲解:
strrpos — 计算指定字符串在目标字符串中最后一次出现的位置
说明
int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )<br>
注
$_SERVER['HTTP_REFERER'] は、以下の状況でのみ取得できるとは限りません。
2. 以下の状況では取得できません: | |
1.お気に入りからリンク | 2. 「ホーム」またはカスタマイズしたアドレスをクリックします | 3. Jscript の location.href または location.replace() を使用します
strrpos
関数の説明:
説明
int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )<p></p>
文字列 $haystack 内で最後に出現したニードルの位置を数値で返します。
$haystack
この文字列内を検索します。
$needle
needle が文字列でない場合は、整数に変換され、文字の連続した値として扱われます。
戻り値
針が存在する位置を返します。見つからない場合は FALSE を返します。 ホットリンク判定コード: asd.php<?php //防盗链技术 //先判断是否获取到 $_SERVER['HTTP_REFERER'] 变量 if(isset($_SERVER['HTTP_REFERER'])){ //判断$_SERVER['HTTP_REFERER']是不是以http://localhost/开始的 if(strpos($_SERVER['HTTP_REFERER'],"http://localhost")==0){ echo '<img src="a.png"/>'; } else{ header("Location:warning.php");//跳转页面到warning.php //echo $_SERVER["HTTP_REFERER"]; } } else { header("Location:warning.php"); } ?>
<html> <b>倒链</b> </html>
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <a href="http://localhost/wml/asd.php" rel="external nofollow" >验证防盗链</a> </body> </html>
以上が理解原則です 通常はサーバーの構成に合格しましたアンチホットリンク (nginx 設定アクセスなど)
およびその他のファイルのホワイトリスト
特定の設定は Baidu で検索できます
🎜 関連する推奨事項: 🎜🎜 🎜Nginx🎜アンチホットリンク🎜とNginxアクセス制御とNginx解析php構成🎜🎜🎜🎜🎜PHPの実装方法🎜アンチホットリンク🎜詳細な説明🎜🎜🎜🎜🎜phpクラック🎜アンチホットリンク🎜🎜🎜 🎜🎜🎜🎜 🎜🎜🎜以上がPHPにおけるホットリンクを防ぐ方法の例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。