0

次の方法でリンクURLをわかりにくくする予定です。URLを配列に格納し、$ _ GET配列でパラメーターを検出すると、保存されたURLにリダイレクトします。

<?
/* Plugin Name: Sample Link Cloak  */

add_action('admin_menu', 'sample_link_cloak');
function sample_link_cloak() {
    add_options_page(
        'Sample Link Cloak', 
        'Sample Link Cloak', 
        'manage_options',
        'sample_link_cloak', 
        'sample_link_cloak_admin');
}
function sample_link_cloak_admin() {
    ?>
    <div class="wrap">
    <?php
        $links = '<p><a href="http://www.google.com">google.com</a></p>' . PHP_EOL
                . '<p><a href="http://www.wordpress.org">wordpress.org</a></p>' . PHP_EOL
                . '<p><a href="http://www.stackoverflow.com">stackoverflow.com</a></p>' . PHP_EOL;

        $doc = new DOMDocument();   
        @$doc->loadHTML($links);    
        $array_urls = array();
        foreach ($doc->getElementsByTagName('a') as $node) {
            $url = $node->getAttribute('href');
            $hash = md5($url);
            $array_urls[$hash] = $url;
            $url = site_url('?urlcloak=' . $hash);
            $node->setAttribute('href', $url);
        }       
        echo $doc->saveXML();
        update_option('sample_urlcloak', $array_urls);
    ?>
    </div>
    <?php
}
add_action('init', 'cloakurls');
function cloakurls() {
    if (isset($_GET['urlcloak'])) {
        $array_urls = get_option('sample_urlcloak');
        wp_redirect($array_urls[$_GET['urlcloak']]);
        exit;       
    }
}

この方法で予測できる問題があります。リンクの数は日ごとに増えるため、ある程度到達したら、保存されているデータを削除する必要があります。ただし、訪問者がWebページをローカルドライブに保存し、後でコンテンツを読んでリンクをクリックした場合、この時点でサーバーがURLを保存していないと、リダイレクトされません。

ここで説明したのとほぼ同じ問題だと思います。多数のリンクリダイレクトを提供するためのより効率的な方法をお探しですか?しかし、分散プラグインの場合、.htaccessファイルを編集することは現実的/実用的ですか?すべてのユーザーが.htaccessを変更するための適切なアクセス権を持っているわけではないと思います。わからない。

誰かが私を正しい方向に導くことができるかどうか疑問に思っています。

4

1 に答える 1

1

アプリケーションによって異なります。通常、他のSO投稿で説明されていることを実行できますが、実際にランダムである場合は、または、リダイレクトされたサイトを制御できません-データベースを使用してください。その機能は、ハードドライブ上で探しているものをすばやく見つけることです。

ここで、現在のアプローチよりも少し疑問に思います。双方向の難読化についてはどうでしょうか。難読化(セキュリティではない)の場合は、URLの暗号化と復号化の両方が可能なアルゴリズムを使用してください。そうすれば、データを保存する必要がなくなります。

于 2012-10-04T06:04:00.410 に答える