ジャンプソースは通常、HTTPリクエストヘッダーの参照フィールドに渡されます。これには、現在のページにアクセスする前にユーザーがいたページURLが含まれます。たとえば、ユーザーがWebサイトAからWebサイトBへのリンクをクリックすると、WebサイトBのサーバー側はWebサイトAのURLを$ _Server ['http_referer']を読み取ることができます。
ただし、注意することが重要です。
参照者は必ずしも送信するわけではなく、一部のブラウザやプラグインはそれを無効にする場合があります。
参考文献は偽造される可能性があるため、完全に信頼することはできません。
Parse_url関数は、Scheme(Protocol)、Host(ドメイン名)、パス(パス)などのコンポーネントにURLを分解できます。リターン結果は、URLのさまざまな部分を判断することを促進する連想配列です。
$url = "https://gitbox.net/path/to/page?query=123";
$parsed = parse_url($url);
print_r($parsed);
出力:
Array
(
[scheme] => https
[host] => gitbox.net
[path] => /path/to/page
[query] => query=123
)
次の例は、PHPを使用してジャンプソースを検出し、指定されたドメイン名( gitbox.netなど)から来るかどうかを判断する方法を示しています。
<?php
// 得る HTTP_REFERER
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
if (empty($referer)) {
echo "ソース情報はありません,たぶん、直接アクセスまたはブラウザが無効になっています Referer。";
exit;
}
// ソースを分析します URL
$parsedUrl = parse_url($referer);
// 含むかどうかを判断します host
if (!isset($parsedUrl['host'])) {
echo "ソース URL 誤った形式。";
exit;
}
// 指定允许的ソース域名
$allowedDomains = ['gitbox.net'];
// 判断ソース是否在允许列表中
if (in_array($parsedUrl['host'], $allowedDomains)) {
echo "访问ソース于可信域名:" . htmlspecialchars($parsedUrl['host']);
// ここでは、後続の論理処理を行うことができます,アクセスまたはロギングが許可されている場合
} else {
echo "访问ソース不可信,ソース域名:" . htmlspecialchars($parsedUrl['host']);
// ジャンプに使用できます、アクセス拒否など。
}
?>
安全上の考慮事項<br> セキュリティ判断については、参照者に完全に頼ることはできません。ログイン検証、トークン検証など、他の手段と協力することをお勧めします。
マルチドメイン名サポート
$ aladdDomainsアレイは、複数のドメイン名を追加し、複数の信頼できるソースをサポートできます。
パフォーマンスの最適化
Parse_URLは処理が簡単で、パフォーマンスのオーバーヘッドが低く、高周波呼び出しに適しています。
PHPのparse_url関数を使用すると、ジャンプリンクのソースURLを簡単に解析し、ジャンプソースの検出とフィルタリングを実現できます。 HTTPリクエストヘッダーの参照者と組み合わせて、開発者はアクセス許可とユーザーの動作分析をより柔軟に管理できます。
実際のプロジェクトでは、ウェブサイトのセキュリティとユーザーエクスペリエンスを向上させるために、ビジネスのニーズに基づいてソースでより詳細な判断を下すこともできます。