Подтвердить что ты не робот

Как предотвратить сканирование в зависимости от XPath от содержимого страниц

Там есть библиотека php, которая делает evreybody способным атаковать меня (что-то вроде cURL). Тогда у меня есть идея предотвратить это, я хочу использовать динамическое имя класса для своих элементов. посмотрите на это:

<div class="<?php $ClassName ?>">anything</div> // $className is taken from the database

Примечание: $ClassName будет меняться время evry.

В этом случае никто не знает, что такое имя моего класса, чтобы выбрать мой элемент, а затем скопировать мои данные. Теперь у меня две проблемы:

  • Как я могу общаться между $ClassName и .$ClassName (в файле css)? другими словами, как я могу использовать переменную php для имен классов css? (динамические классы css)
  • Оптимизирован ли он для получения всех имен классов из базы данных?!
4b9b3361

Ответ 1

Использование базы данных для получения имени класса не является оптимальным, пока оно не будет выполнено локально. Вы должны определить массив всех имен классов, а затем выбрать один из них на array_rand, что-то вроде этого:

// php code
   <?php
     $classes = array('class1','class2','class3','class4'); 
     $class_name = $classes[array_rand($classes)];
   ?>


// html code
     <div class="<? php echo $class_name; ?>">anything</div>


// css code
   <style>
     .<? php echo $class_name; ?> {
      // your css codes
     }
   </style>

Примечание: вы должны знать, что не можете использовать php-коды в файле .css, тогда вы должны написать все кодовые коды css, которые вы хотите быть динамическими в вашем файле .php, и использовать <style> stuff </style>.

Между тем, как сказал @sємsєм, вы можете создавать динамические html-теги.

Некоторые вещи вроде этого: (полный код)

// php code
   <?php
     // dynamic class
     $classes = array('class1','class2','class3','class4'); 
     $class_name = $classes[array_rand($classes)];

     // dynamic tags
     $tags_statr = array('','<div>','<div><div>','<div><p>','<span><div>');
     $tags_end = array('','</div>','</div></div>','</div></p>','</span></div>');
     $numb = array_rand($tags_statr);
   ?>


// html code
     <?php echo $tags_statr[$numb]; ?>
     <div class="<? php echo $class_name; ?>">anything</div>
     <?php echo $tags_end[$numb]; ?>


// css code
   <style>
     .<? php echo $class_name; ?> {
      // your css codes
     }
   </style>

И для повышения безопасности вы можете разместить свой контент (здесь "что угодно" ) (в дополнение к внешним динамическим тегам). например:

<span1>anything</span1> // <span1> changed to <span2,3,4....>

В этом случае соседний тег с данными также является динамическим, и это затрудняет сканирование.

Наконец, я должен сказать, что вы не можете полностью предотвратить сканирование, вам просто сложно. Если вы действительно хотите защитить свои данные, вы можете делать такие вещи, как они:

  • Увеличение ограничений для пользователей. (например, только зарегистрированные пользователи могут видеть важную информацию).
  • Мониторинг IP, который использует ваш веб-сайт (и, если подозрение, заблокировать его)
  • Используйте соответствующее программное обеспечение. (например, для ежедневного ограничения поиска IP)

Ответ 2

  • Определите свой класс в CSS на своей странице:
<style>
    .<?php echo $ClassName;?>{
      /* Your CSS */
     }
</style>`
  1. Просто создайте $ClassName как произвольную сгенерированную строку, вам не нужно подключаться к базе данных.

Update

На основе ответа епископа вы можете добавить изменчивую структуру DOM в свой документ. Вы должны ввести две переменные PHP, такие как $start и $close. $start будет иметь теги с открытием в случайном порядке, такие как <span><div><p> и $close их закрыть, </p></div></span> затем заключить ваш документ между ними

<?php echo $start;?><div class="<?php $ClassName ?>">anything</div><?php echo close;?>

Ответ 3

Извините, но ваши усилия будут потрачены впустую. Даже если имя класса случайно изменяется, ваш DOM можно атаковать по-разному, например: div + div > span > a.

Но даже если вы повернете свои позиции (например, добавив ложные div и span), любой скребок, который стоит его соли, на самом деле не заботится: он найдет текст на вашей странице, а затем выберет из ближайшая разметка намерения. Как работает Google, BTW.

У вас есть один реалистичный подход к этой проблеме. Во-первых, подключите монитор IDS к вашему веб-серверу. Когда IDS обнаруживает шаблон сканирования, отключите или отключите IP-адрес. Или, и это мой любимый, бросьте сканер в медовый горшок с фальшивым контентом. То есть, если ваш фактический текст гласит, что "виджеты Freds являются лучшими в мире", выполните альтернативную страницу, в которой говорится: "Бобы-гонады не соответствовали морскому блаженству".

Я использую эту последнюю тактику на нескольких сайтах моих клиентов для веселых результатов на китайских копиях.