ホームページ >バックエンド開発 >PHPチュートリアル >PHPを使用してリファラーを取得し、不正アクセスを防ぐソースを特定する方法
この記事では、不正アクセスを防ぐために、PHPを使用してソースを特定するためのリファラーを取得する方法を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。
ダウンロードページ down.php の php コードを Thunder または Google Chrome で直接開くと、ダウンロードしたファイルが出力されることがわかりました。抗蛭効果はまったくありません。自分のサイトに接続している人だけが直接利用できるようにしたいのですが、他のサイトに接続している人や、このアドレスを直接入力した人は、copy.htm のページにジャンプします。
PHP の事前定義されたサーバー変数 $_SERVER["HTTP_REFERER"] によってソースを特定できます。
$_SESSION['HTTP_REFERER'] は、現在のリンクの前の接続のソース アドレス、つまり、現在のページにリンクされている前のページの URL アドレスを取得できます。
これは一般に、閲覧者がリンクをクリックしてこのページに移動した場所、いわゆるオリジンを特定するために使用されますが、オリジンを特定することでホットリンクを防止するためにも使用されます。
例:
<?php $url_array = parse_url($_SESSION['HTTP_REFERER']); //如果页面的域名不是服务器域名,就连接到登陆窗口 if($_SERVER['HTTP_HOST'] != $url_array["host"]) { header("location: login.php"); exit; } ?>
最近、ユーザーが json ページに不正にアクセスするのを防ぐ必要があるプロジェクトがあります。基本的な解決策は、呼び出し以外のアクセスを制限するソースを決定することです:
$_SERVER[‘HTTP_REFERER’]:来路链接,可能带尾巴(如: 可以通过php内置函数parse_url()来获取到当前网址(www.httple.net),即: $refererUrl = parse_url($_SERVER[‘HTTP_REFERER’]); $host = $refererUrl[‘host’]; $host的值即为来路的网址(www.httple.net)。 获取到了来路的网址之后,我们就可以通过这个网址来限制访问该页面的权限了。代码如下: if(!isset($_SERVER[‘HTTP_REFERER’]) || $referurl[‘host’] !=”www.httple.net”) { header(“location: /”); //如果没有来路,或者来路不是本站,跳转到首页。 exit; }
このコード行を JSON データ ページの先頭に置くと、この問題を簡単に解決できます。
この処理方法の欠点: ページの通常のデータは、偽造されたソースを通じて取得される可能性があります。
関連コード
ソース URL を取得する方法は、主にサーバー変数の HTTP_REFERER 関数を使用します。コードを貼り付けます:
function get_referer(){ $url = $_SERVER["HTTP_REFERER"]; //获取完整的来路URL $str = str_replace("http://","",$url); //去掉http:// $strdomain = explode("/",$str); // 以“/”分开成数组 $domain = $strdomain[0]; //取第一个“/”以前的字符 return $domain; } //对于百度、谷歌搜索引擎来路判断 function get_seo(){ $s = 0; if(strstr(get_referer(),'baidu.com')){ $s = 1; } else if(strstr(get_referer(),'google.com.hk')){ $s = 1; } return $se; }
php website ソース URL を取得するこのメソッドは主にサーバー変数の HTTP_REFERER 関数を使用します。コードは次のように貼り付けられます:
function get_referer(){ $url = $_SERVER["HTTP_REFERER"]; //获取完整的来路URL $str = str_replace(“http://”,””,$url); //去掉http:// $strdomain = explode(“/”,$str); // 以“/”分开成数组 $domain = $strdomain[0]; //取第一个“/”以前的字符 return $domain; } //对于百度、谷歌搜索引擎来路判断 function get_seo(){ $s = 0; if(strstr(get_referer(),’baidu.com’)){ $s = 1; } else if(strstr(get_referer(),’google.com.hk’)){ $s = 1; } return $se; }
フォームを処理するときは、Discuz がすでにフォームハッシュに基づいてユーザーによる静的送信の可能性を判断します。
ここでは、ページの起源を特定するために別の方法を使用します。もちろん、この方法は HTTP_REFERER
## の起源を偽造するためにも使用できます。 # 2 番目の部分は、PHP のheader('location: がページにジャンプした後、次のページの HTTP_REFERER を取得できないという問題を解決することです。ここでは、ページへのリンクを追加してから js を使用することしかできません。リンクのクリックをシミュレートして、次のページが確実に HTTP_REFERER を受信するようにします。キーワード: document.getElementById('gourl').click();
推奨学習:以上がPHPを使用してリファラーを取得し、不正アクセスを防ぐソースを特定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。