26 июл. 2011 г.

Как защитить данные от индексирования

В интернете появляется все больше и больше случаев, когда личные данные пользователей оказываются проиндексированными поисковиками. В поисковые запросы попадают данные об почтовом адресе, о совершенных покупках в интернет-магазинах и прочие данные, которые предназначались только для данного человека (например, в разделе "статус заказа" в интернет-магазине).

Анализ проблемы показывает, что правильный robots.txt может НЕ СПАСТИ ситуацию, несмотря на все заверения пресс-службы Яндекса о том, что во всем виноват только отсутствующий файл robots.txt.

На самом деле проблема гораздо глубже. Вот типичный пример: интернет-магазин, на котором всю работу выполняет ОДИН единственный PHP скрипт, который, при запуске с разными параметрами, генерирует разные страницы сайта:

мойсайт.ру/index.php - главная страница интернет-магазина
мойсайт.ру/index.php?page=about - "страница" о компании
мойсайт.ру/index.php?page=cart&user=pupkin - страница с покупками для пользователя Pupkin.

Как видите, всё содержание сайт генерирует динамически, по информации из своей базы данных и по коду на PHP - и в этом случае глупая запись
Disallow: /cgi-bin/

конечно же не поможет, поскольку такого каталога нет на сайте, или в нем ничего не хранится и так.

Ситуацию может спасти такая запись в robots.txt:
Disallow: /index.php?page=cart
но не на долго, потому что если я поменяю порядок параметров в запросе:

мойсайт.ру/index.php?user=pupkin&page=cart

то этот адрес уже не попадет в список запретных для поискового робота.

Самым правильным решением с ложившейся ситуации, на мой взгляд, является разбитие одного PHP скрипта на два: в одном производится работа с общедоступными данными, а второй предназначен исключительно для отображения статуса заказа.
Назвав этот скрипт как mycart.php, мы можем запретить индексировать этот скрипт с любыми вариациями параметров к нему:

Disallow: /mycart.php