現在の位置: ホーム> 最新記事一覧> parse_urlを介してジャンプリンクのソースを検出する方法

parse_urlを介してジャンプリンクのソースを検出する方法

gitbox 2025-05-20

ジャンプソースは通常、HTTPリクエストヘッダーの参照フィールドに渡されます。これには、現在のページにアクセスする前にユーザーがいたページURLが含まれます。たとえば、ユーザーがWebサイトAからWebサイトBへのリンクをクリックすると、WebサイトBのサーバー側はWebサイトAのURLを$ _Server ['http_referer']を読み取ることができます。

ただし、注意することが重要です。

  • 参照者は必ずしも送信するわけではなく、一部のブラウザやプラグインはそれを無効にする場合があります。

  • 参考文献は偽造される可能性があるため、完全に信頼することはできません。

2。PHPのParse_url関数の紹介

Parse_url関数は、Scheme(Protocol)、Host(ドメイン名)、パス(パス)などのコンポーネントにURLを分解できます。リターン結果は、UR​​Lのさまざまな部分を判断することを促進する連想配列です。

 $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
)

3.ジャンプソース検出を実装するためのサンプルコード

次の例は、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']);
    // ジャンプに使用できます、アクセス拒否など。
}
?>

4。補足ノート

  • 安全上の考慮事項<br> セキュリティ判断については、参照者に完全に頼ることはできません。ログイン検証、トークン検証など、他の手段と協力することをお勧めします。

  • マルチドメイン名サポート
    $ aladdDomainsアレイは、複数のドメイン名を追加し、複数の信頼できるソースをサポートできます。

  • パフォーマンスの最適化
    Parse_URLは処理が簡単で、パフォーマンスのオーバーヘッドが低く、高周波呼び出しに適しています。

5。概要

PHPのparse_url関数を使用すると、ジャンプリンクのソースURLを簡単に解析し、ジャンプソースの検出とフィルタリングを実現できます。 HTTPリクエストヘッダーの参照者と組み合わせて、開発者はアクセス許可とユーザーの動作分析をより柔軟に管理できます。
実際のプロジェクトでは、ウェブサイトのセキュリティとユーザーエクスペリエンスを向上させるために、ビジネスのニーズに基づいてソースでより詳細な判断を下すこともできます。