Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Сайтостроение - самые эффективные решения


Спонсор Рассылки: Клуб Желающих Создать и Развивать Свой Сайт.


Здравствуйте.

Действуйте сейчас, если хотите создать сайт за Час..

PHP. Практика создания Web-сайтов
Самоучитель. Создание Web-сайтов: + 2 видеокурса на двух CD: Adobe Flash CS3 & Adobe Dreamweaver CS3
Видеосамоучитель. Создание Web-страниц
PHP, MySQL и Dreamweaver. Разработка интерактивных Web-сайтов


Защита от спама на сайте


Источник: http://wm-help.net/

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

Введение в проблему

Все мы знаем, что такое спам, потому что либо сталкивались с этим, либо читали об этом. Все мы знаем, как спамеры собирают адреса для рассылок. Так же не секрет, что спам невозможно победить полностью. Проблема состоит в том, как максимально защитить пользователей, оставляющих свои контанктные координаты на вашем сайте, минимальными усилиями.

Ранее испытанные способы защиты

Самую большую угрозу почтовым ящикам представляют программы, качающие сайты и берущие из текста страниц почтовые адреса. Они качают либо только ваш сайт, либо бродят, как поисковые системы, по всей сети. Если ваш сайт небольшой, вполне достаточно защиты такой автозаменой текста:

<?php
$text
= preg_replace("~(<a[^>]+href=)([\"']?)mailto:([\\w_\\.\\-]+)([\\w_\\.\\-])@". <br>"([\\w_\\.\\-])([\\w_\\.\\-]+\\.[a-z]{2,4})\\2([ >])~i", "\\1\"mailto:spamux@nospam.ru\" <br>onMouseover=\"this.href='mai' + 'lto:\\3' + '\\4' + '%40' + '\\5' + '\\6';\"\\7", $text);
?>

К сожалению, она не сработает, если у вас большой сайт. Скажем, spectator.ru, автор которого одним из первых стал использовать этот метод. Будь я спамером, я бы залез в персональные настройки, поставил галочки "не показывать ушки", 1000 отзывов на странице, и отловил куки Proxomitron'ом. Потом качалкой или php-скриптом выкачал бы страницы с комментариями (подставив куки с настройками) и при помощи регулярного выражения выловил адреса. Получил бы небольшую базу для рекламной рассылки.

Была ещё пара способов защиты, в которых ссылка mailto: автоматически заменяется на кукую-либо другую, но эффект оставался прежний — при нажатии на неё системный клиент создавал бы письмо по нужному адресу. Оба они не выдержали критики.

Знакомьтесь: ежовые рукавицы

Очевидно, сложно придумать другой способ защиты кроме уже испытанного — предоставления формы на сайте для отправки сообщения. Займёмся её проектированием. Достоинства способа очевидны: никто уже не сможет достать из вашего сайта адреса для своей спамерской базы данных. Отсылать сообщения, спрятав свой адрес, как это делают спамеры, не получится — веб-сервер зафиксирует его IP-адрес. Списки публичных анонимных прокси-серверов регулярно обновляются, и заблокировать доступ с них легко.

Формоотправитель

Начнём именно с него, потому что это самая сложная часть.

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

Во-первых, защитимся от глупых двойных нажатий и отправки множества одинаковых запросов. Идея такова: сообщение не будет отправлено, если перед этим пользователь не открыл страницу с формой, а, открыв страницу с формой, можно отправить сообщение только один раз. Сделать это можно при помощи встроенных в PHP сессий. При открытии страницы с формой мы запустим сессию, в которую сохраним переменную, скажем $flag. Идентификатор сессии выведем как спрятанный элемент в самом конце формы. Пользователь вводит сообщение и отправляет форму. Получая форму, скрипт запускает сессию и проверяет наличие и значение переменной $flag. Если переменная не существует, значит это повторное нажатие, письмо не отсылается и выдаётся сообщение об ошибке. Если переменная есть, и данные формы нас устроили (заполнены нужные поля), скрипт отсылает письмо и удаляет сессию.

Во-вторых, защитимся от умных хулиганов, записывая логи сообщений. Если пользователь отправлят правильно заполненную форму, скрипт будет смотреть в логи и проверять, что там. Так, нужно запретить

  • отправлять сообщения по одному и тому же адресу чаще определенного периода
  • отправлять один и тот же текст по разным адресам
  • и просто слишком часто пользоваться формоотправителем — скажем, не более 10 сообщений в сутки на одного пользователя

ID сессии выводим в самом конце формы, чтобы хакеру требовалось скачивать всю форму и разбирать её, что сложнее, чем просто отправлять HTTP-запросы. Естественно, формоотправитель будет выдавать сообщения об ошибках в написании сообщения, требование указать обратный адрес и т.п.

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

Замена адресов в тексте

Теперь формоотправитель готов, и нужно заменить все email`ы на ссылки на него. Конечно же, вручную делать этого не стоит. Для себя я написал скрипт, автоматически заменяющий адреса на ссылки к формоотправителю.

Учет ссылок / битые ссылки. Часто приходится ссылаться на одно и то же, также часто ссылки устаревают и «ломаются». Идея: хранить все ссылки в одном месте, нумировать их, и ссылаться на них в виде <a href=link.php3?id=10>.

...Минусы: большее время на расстановку ссылок (компенсирующееся каталогом ссылок), пользователь, наводя курсор на ссылку, не видит, по какому адресу он попадет. (Дмитрий Смирнов, "Идеальный авторский проект, гипертекстуальность")

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

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

Итак, что делает заменитель адресов. Он ищет в тексте ссылки "mailto:", выбирает из них адреса, отправляет запрос в базу, чтобы подсчитать (count(*)), сколько адресов из тех, что на странице, есть в специальной таблице. Если на странице новые адреса, то их число будет больше, чем результат запроса. В таком случае делается запрос, в котором выбираются значения адресов, и уже существующие в таблице исключаются из списка. Оставшийся список отправляется в таблицу INSERT-запросом.

Что касается ID адресов, то, на мой взгляд, лучше использовать что-то, что посетитель сайта не мог бы подобрать. Представляете, на формоотправитель ведёт ссылка /email.php?id=10 ? Какой соблазн подставить туда 11, 12 и т.д. и попробовать отправить им всем сообщение. Поэтому в качестве идентификаторов я решил использовать md5-хэш от адресов. Подбирать хэш вряд ли кто возьмётся. В случае с каталогом ссылок можно обойтись и ID, но тогда придётся выбирать из базы все значения, а для замены адресов на их хэши всё гораздо проще.

Выполняется команда вида

<?php
$text
= preg_replace("~(<a[^>]+href=)". "(['\"]?)mailto:([\\w_\\.\\-]+@[\\w_\\.\\-]+". "\\.[a-z]{2,4})\\2(.*?>)~ie", "'\\1\\2\"/email.php?email='. urlencode(md5('\\3')). '\"\\4'", $text);
?>

...которая заменяет адреса на их хэши. Остальные адреса, находящиеся в тексте, я не решился заменять на ссылки, а сделал простую замену на адреса типа vasya_at_pupkin_dot_ru. Код автозаменителя так же есть в архиве.

Итог

Прятать почтовые адреса от посетителей довольно просто. Механизм автозамены не требует дополнительных усилий, и вы можете писать страницы сайта дальше, как будто бы ничего не произошло. Сложности возникают при защите формоотправителя от веб-хулиганов. Эта защита требует больших усилий и сложного кода, поэтому пока что я не стал использовать на сайте написанный код. Вы можете скачать архив с заменителем адресов и формоотправителем, только очень прошу: не ставьте его на свой сайт в том виде, в котором скачали, я сам не знаю, насколько надёжно он работает.

Впрочем, возможно, я слишком жестко стараюсь защититсья от флуда. Ведь одно дело слать спам, используя ошибки почтовых серверов и пряча свой адрес, а другое - заходить по на веб-сервер, который записывает всё, что ты делал. Доступ с анонимных прокси к формоотправителю, естественно, следует закрывать.



Для нового сайта я рекомендую вам вот эту компанию платного хостинга

Задать свой вопрос: sitesozdatu(собака)yandex.ru






Защита контента на сайте


Источник: http://webstudent.ru

Автор: Кащеев Дмитрий

 

Иногда возникает необходимость защитить от копирования текст, или картинки на сайте. Если вы считаете, что вам непременно нужно воспрепятствовать копированию чего-либо с сайта, то советы приведённые ниже для вас.

Предупреждаю сразу, стопроцентной защиты не существует и абсолютно любой способ защиты контента можно обойти при наличии определённых знаний и соответствующего опыта. Максимум, что мы можем сделать, это помешать веб-мастерам новичкам и не продвинутым пользователям. Описывая каждый способ защиты, я буду давать маленькую справочку относительно того, почему его применение не всегда оправдано.

1. Один из самых простых способов защиты текста, это выражение oncopy=“return false” это обычный атрибут тега body. Т.е. тег <BODY> у вас будет выглядеть приблизительно так:
<BODY oncopy=“return false” bgColor=#ffffff >
В этом случае, текст на странице выделяется, затем копируется, но при попытке вставить его в другой документ, вы обнаружите, что буфер обмена пуст, и на самом деле копирования не произошло.

Но ничто не помешает сохранить страницу целиком, а если появляется сообщение «Невозможно сохранить веб-страницу», то из меню Файл/Сохранить как нужно выбрать Вебстраница, только HTML, и всё! Веб-страница с текстом, который нельзя копировать напрямую находиться на вашем жёстком диске.

А теперь давайте подумаем об обычном посетителе, читателе, который зашёл на страницу для того, чтобы прочитать статью, получить полезную информацию. Не секрет, что многие офисные работники не любят читать текст с экрана монитора, а выводят его на принтере. Так вот, хорошо, если у вашей страницы есть версия для печати (в таких версиях обычно полностью отсутствует вся графика, навигация, есть только текст), а если нет, то печатать всю страницу нерационально. Обычно люди предпочитают перекинуть текст в Word и распечатать. Вот тут то ваших читателей и ждёт разочарование, т.к. вы заставляете печатать страницу со всеми счётчиками, ссылками, рекламой и т.д

2. Если вы хотите воспрепятствовать просмотру страницы в виде HTML, или сделать невозможным копирование с помощью правой кнопки мыши (контекстное меню), то можно запретить нажатие правой кнопки мыши. Для этого в тегах <head></head> вставьте следующий код:

<SCRIPT language=JavaScript>
var message="Уважаемый посетитель! Использовать правый клик на этом сайте нельзя!";
function click(e) {if (document.all)
{if (event.button == 2)
{alert(message);return false;}}
if (document.layers) {if (e.which == 3)
{alert(message);return false;}}}
if (document.layers)
{document.captureEvents(Event.MouseDown);}
document.onmousedown=click;
</SCRIPT>

Предупреждаю сразу, скрипт несёт больше вреда, чем пользы, т.к. затрудняет работу со страницей даже вам самим, а защиты не обеспечивает ровным счётом никакой. Копировать можно сочетанием Ctrl+C, а код можно глянуть в любом редакторе.

3. По возможности делайте ссылки на изображения относительными, а не абсолютными, в этом случае плагиатор не сможет просто взять кусок вашего кода и вставить в свой дизайн (хотя у него и он вероятно ворованный). Ему придётся перелинковать страницу. Параллельно, позаботьтесь о том, чтобы изображения находящиеся на вашем хостинге не отображались на других сайтах, если только траффик не неограниченный.
Недостаток этого метода в том, что при обмене банерами принято высылать не сам банер, а только код ссылки на него. А если запретить загрузку картинок с других доменов, то банеры отображаться не будут.

4. Ещё один способ защиты ваших изображений это применение инвертирования цветов. Суть метода заключается в следующем: с помощью Photoshop’а вы инвертируете цвета на изображениях, сохраняете их в таком виде и заливаете на сервер. Затем в HTML-коде применяете фильтр invert, таким образом, изменённая ранее и лежащая на сервере картинка будет отображаться для посетителей в нормальном виде.

Никогда не применяйте этот метод для картинок, которые предлагаете скачать своим посетителям, т.е. обоям, рисункам, потому, что посетители кликнут на правую кнопку, «Сохранить как», и живут спокойно, а потом обнаружат у себя на жёстком диске какие то не те изображения, что им требовались. Метод применим, например, к вашим личным фотографиям, ценным работам и т.д., в общем, к тому, что не предназначено для распространения.



Задать свой вопрос: sitesozdatu(собака)yandex.ru






Создание Web-сайтов в Microsoft Expression Web
Создание Web-страниц для "чайников"
Использование 3D-технологии при создании WEB-сайтов
Building.org. Руководство менеджера по созданию успешных веб-сайтов для международных организаций


Полезные АудиоМатериалы


Поиск платного хостинга

Почему Платный хостинг php

Интернет магазин шаг 1

Архив Аудиоматериалов

Спонсор Рассылки: Клуб Желающих Создать и Развивать Свой Сайт.




В избранное