portfob.ru

Блог web безопасности
  • Главная
  • О блоге
Главная  /  SECURITY TIME • Мои записки • Прочие  /  Как защитить сайт от копирования

Как защитить сайт от копирования

admin 26 ноября, 2016 SECURITY TIME, Мои записки, Прочие
КАК ЗАЩИТИТЬ САЙТ ОТ КОПИРОВАНИЯ

Был у меня случай, когда один фейковый сайт полностью копировал сайт заказчика с подменой данных на свои. При этом в поисковых системах по нужным ПС запросам этот сайт находился намного выше, чем оригинальный сайт. Честно говоря, довольно токи интересный подход у конкурента был)) Но мы сейчас поговорим не об этом, а о примере того, как можно защитить сайт от копирования ботами/парсерами.

Первая мысль у меня была в том, что на сайте оригинале была заложена закладка. Однако, детально проанализировав сайт на наличие сторонней гадости, ничего не нашлось. После анализа файла access_log четко стало понятно, что скрипт работает со стороннего сервера, фейка, и парсит контент с подменной данных.

Просто забанить IP смысла нет, так как не составит большого труда парсить контент через прокси, т.е IP будет постоянно меняться. Тут возникла глупая идея – вставить в контент скрипт, который будет проверять HOST и, в случае не соответствия, редиректить на оригинал сайта.

Пример скрипта:

JS проверка домена
JavaScript
1
2
3
4
<script>
if(window.location.hostname!=='portfob.ru')
{window.location.hostname='portfob.ru';}
</script>

Какое то время, это работало. На фейке автоматом появился этот скрипт, и посетители с него начали попадать на оригинальный сайт, в том числе и с поисковых систем.

Знал я конечно, что счастье не вечно!

Через некоторое время бот начал реплейсить название домена. Мы вернулись к началу проблемы.

В этот момент возникла еще одна идея – поставить “Google Captcha” по вверх индексного файла (в моем случае). То есть логика такова: кто бы не зашел на сайт, ему сначала показывается капча, только потом!!! – весь оригинальный контент. На сегодняшний день мне пока не известны системы ее обхода. Следовательно, когда бот-парсер попадает на сайт, он подвисает на капче и идет лесом.

Защита сайта от копирования ботами – Google reCaptcha

Перед тем, как использовать reCaptcha, нам нужно зарегистрироваться и получить siteKey и secretKey на сайте https://www.google.com/recaptcha/intro/index.html

КАК ЗАЩИТИТЬ САЙТ ОТ КОПИРОВАНИЯ Заполняем все формы и регистрируемся, в замен он нам дает нужные ключи:

как можно защитить сайт от копирования ботами/парсеров

После этого переходим к подготовке формы, которая будет выводиться к первичному обращению на сайт. Я вам покажу на примере своего блога:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<?php
 
function gCaptcha($msg){
echo '
<html>
<head>
    <script src="https://www.google.com/recaptcha/api.js"></script>
</head>
<style>
.parent {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    overflow: auto;
}
 
.block {
    width: 350px;
    height: 250px;
    position: absolute;
    top: 50%;
    left: 50%;
    margin: -255px 0 0 -255px;
background-color: #ffffff;
border: 2px solid #D4D4D4;
border-radius: 10px;
box-shadow: 0 0 15px #A9A9A9;
 
}
 
.button4 {
    font-family: Verdana, Geneva, sans-serif;
    font-size: 24px;
    color: #FFF;
    padding: 5px 50px 5px 50px;
    border: 1px solid #999;
    text-shadow: 0px 1px 1px #666;
    text-decoration: none;
    -moz-box-shadow: 0 1px 3px #111;
    -webkit-box-shadow: 0 1px 3px #111;
    box-shadow: 0 1px 3px #111;
    border-radius: 4px;
    -moz-border-radius: 4px;
    -webkit-border-radius: 4px;
    background: #64a724;
    background: -moz-linear-gradient(top, #64a724 0%, #579727 50%, #58982a 51%, #498c25 100%);
    background: -webkit-gradient(linear, left top, left bottom, from(#64a724), to(#498c25), color-stop(0.4, #579727), color-stop(0.5, #58982a), color-stop(.9, #498c25), color-stop(0.9, #498c25));
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=\'#64a724\', endColorstr=\'#498c25\', GradientType=0 );
    cursor: pointer;
}
.button4:hover {
    border: 1px solid #FFF;
}
</style>
<body>
<div class="parent">
    <div class="block">
<center>  
<form action="" method="post"><br>
<font color="blue"><h1>Анти бот</h1></font>
<span class=\'msg\'></span>
    <div class="g-recaptcha" data-sitekey="ТУТ МОЙ СЕКРЕТНЫЙ КЛЮЧ"></div>
<br>
    <input type="submit" class="button4" value="Подтвердить!" />
    </form>
</center>    
    </div>
</div>
 
</body>
</html>';
}
 
 
function gCurlCaptcha($url)
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_TIMEOUT, 10);
    curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16");
    $curlData = curl_exec($curl);
    curl_close($curl);
    return $curlData;
}
 
 
$msg='';
 
if(isset($_SERVER["REQUEST_METHOD"]))
{
if(isset($_POST['g-recaptcha-response'])){
    $recaptcha=$_POST['g-recaptcha-response'];
    if(!empty($recaptcha))
    {
        include("getCurlData.php");
        $google_url="https://www.google.com/recaptcha/api/siteverify";
        $secret='ТУТ СЕКРЕТНЫЙ КЛЮЧ ДЛЯ ГУГЛА'; //Секретный ключ
        $ip=$_SERVER['REMOTE_ADDR'];
        $url=$google_url."?secret=".$secret."&response=".$recaptcha."&remoteip=".$ip;
        $res=gCurlCaptcha($url);
        $res= json_decode($res, true);
        //reCaptcha введена
        if($res['success'])
        {
 
// Продолжаем проверку данных формы
 
define('WP_USE_THEMES', true);
 
/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
}
        else
        {
$msg="Please re-enter your reCAPTCHA.";
gCaptcha($msg);            
        }
 
    }}
    else
    {
$msg="Please re-enter your reCAPTCHA.";
gCaptcha($msg);
            
    }
 
}
?>

Таким образом мы прячем сайт от ботов, которые могут дублировать, парсить наш контент. Конечно, есть разносторонние хитрости, и опытный человек сможет их найти. Чем полезен еще такой подход, так это тем, что он помогает нам защититься от ботов, которые массово бегают по спискам конкретных сайтов и пытаются в автоматическом режиме реализовать ту или иную уязвимость. Но тут оптимальное решение для подобного момента – подключать капчу через функцию auto_prepend_file.

auto_prepend_file – определяет имя файла, который будет автоматически обрабатываться перед основным файлом. Файл вызывается так, будто он был подключен при помощи функции require

Чтоб вы не пугались, как отреагирует, к примеру, поисковая система yandex или какие либо социальные сети, скажу, что тут все нормально просматривается и индексируется.

Скриншот с вебмастера в яндексе после установления капчи на данный сайт:

Единственное, что тут может испугать, так это пользователя по неопытности, по незнанию, который может не захотеть вводить капчу и уйти. Ну раз так, значит это не наш клиент)))

 

 

Previous Article
Next Article

Related Posts

  • Уязвимость в плагине PPOM for WooCommerce Pro version 23.2

    Уязвимость в плагине PPOM for WooCommerce Pro version 23.2

    22.09.2021
  • xss yandex map

    XSS в сервисе Яндекс-карты

    06.03.2020
  • JS/Redirector.NKN

    Как вирусы убивают скрипты сайта

    22.10.2018

Рубрики

  • SECURITY TIME
    • BugTrack
    • Уязвимости
  • Мои записки
  • Прочие
  • Шпаргалки

Свежие записи

  • Шпаргалка по Burp Suite
  • Уязвимость в плагине PPOM for WooCommerce Pro version 23.2
  • Памятка по SQL-инъекциям
  • XSS в сервисе Яндекс-карты
  • Как вирусы убивают скрипты сайта
  • Символы, о значении которых мы и не догадывались
  • Уводим клиентскую базу с “Клатч”
  • Exploitation of the Vulnerability in Plugin for WordPress «Wordfence Security»
  • Как защитить сайт от копирования
  • Старое о главном – проблемы администраторов серверов
Tweets by winstrool
Home page of Winstrool |