Данная статья посвящена такой актуальной теме в онлайн, как основы защиты своих web-проектов от взлома...
Как ни странно, но большинство даже очень успешных в мире онлайна ребят пренебрегают элементарными приемами защиты своего сайта, ведь на первый взгляд ничего страшного с Вашим сайтом и хранящейся на нем информацией просто не может произойти...
Самое большое заблуждение пользователей Интернета - мысль, типа: "Да кому мой сайт нужен, у меня там нет ничего особо ценного".
Действительно, на самом сайте у Вас может быть мало ценного, но САЙТ - уже ценность для взломщика.
И под взломом я понимаю не только техническое проникновение в сайт, но и маркетинговый взлом, т.е. кража инфо-продуктов, обход Ваших маркетинговых приемов и предложений, в общем, все, что негативно сказывается на Вашем информационном бизнесе...
Цель любого взлома, в лучшем случае - это возможность для прыщавого имбицила- девятиклассника самореализоваться за счет того, что он "украдет" Ваш платный инфо- продукт и выложит на каком-нибудь сайте прямую ссылку для его скачивания, в худшем - возможность управлять чужим сайтом, возможность использовать его как "бота".
"Боты" (сокращение от Робот) участвуют в рассылке вирусов, в массовых атаках на сайты, в рассылке рекламных писем и прочей "грязной" работе.
Не стану долго лить воду и наводить туман, а вместо этого приведу "топ" самых явных и неоправданных "дыр" в Ваших web-проектах и их последствия:
Дыра №1 - Открытый доступ к папкам и разрешенный просмотр их содержимого на сервере при отсутствии индексной страницы.
Данная "дыра" особенно часто встречается у начинающих web-мастеров при создании самодельных сайтов.
Все дело в том, что используя cms ("движок сайта"), Вы, чаще всего, не создаете самостоятельно никаких папок в структуре сайта, так как загрузка всех файлов и картинок обычно происходит прямо из админки выбранного Вами "движка" в специально предусмотренную для этого папку.
Другое дело, когда Вы, например, создаете продающий мини-сайт или мини-сайт рассылки... ;-)
Зачастую структура такого мини-сайта очень проста, в корневой папке лежит индексная страница с "продающим текстом" или предложением подписаться на рассылку, а рядом лежит пара папок с нехитрыми названиями типа: "images", "file", "files", "download", "downloads", "pay", "pages" и т.д. и т.п.
Соответственно, имея немного знаний и сноровки, юзер может легко узнать их названия из html-кода доступных ему страниц или попробовать подобрать эти названия, путем ввода стандартных имен папок в окне браузера.
И все бы ничего, ведь юзер знает только название папки с файлами, а не имена файлов, не так ли? Все дело в том, что большинство сайтов при отсутствии в папке индексной страницы (а в папке с файлами, архивами и картинками файл index.html зачастую отсутствует) выдают в браузер листинг всех файлов, которые находятся в данной папке, таким образом, предоставляя возможность выбора к какой странице или файлу юзер хочет обратиться. Последствия очень легко предугадать...
В случае с рассылкой Ваш контент становится общедоступным и нужды отдавать Вам свой e-mail у юзера просто не будет, в случае с продающим мини-сайтом Вы теряете живые деньги!
И можете не надеяться, что это единичные случаи: как только Ваш сайт будет взломан, "Онлайновый Робин Гуд" не поленится рассказать всем, кому ни попадя, какой Вы лох, и как Вас спекулянта можно наказать, а Вашему авторитету в сети придет полный и безоговорочный крах!
Как такого избежать? - Элементарно! Все, что нужно сделать - это закачать в корневую папку сайта (Ведь у Вас платный хостинг, не так ли?) файл .htaccess следующего содержания:
Options -Indexes
Если у Вас в корне сайта уже есть .htaccess - просто допишите указанную директиву с новой строки.
Дыра №2 - Неоправданное использование скриптов (в основном бесплатных javascript).
Как это мило, когда заходишь на страницу, а там снегопад или листопад, заголовок гласит: "Доброе утро, Вася! Ты зашел на мою страницу уже 10 раз, ты используешь Internet Explorer, а последний раз тут был вчера...", потом со всех сторон вылетают банеры, попапы и т.д. и т.п.
Я, конечно же, слегка утрирую, однако, очень часто скриптовыми феньками злоупотребляют даже опытные интернетчики!
Ну и что с того? - спросите Вы.
А вот что: одним из самых распространенных типов атак в интернете является XSS (Cross site scripting). Кто не дружит с инглишем "Cross site scripting"
переводится как "межсайтовый скриптинг". Что это такое?
XSS - это вид атаки, когда хакер вместо непосредственной атаки со своего сайта, использует уязвимый сайт в качестве средства атаки на клиента.
На практике это может выглядеть так: При первом заходе на страницу java-скрипт просит ввести в специальное окошко имя юзера (встречались с таким? ;-)), при небольшой модификации хакером этот же скрипт в момент передачи на Ваш сайт имени юзера может, в лучшем случае, параллельно передавать на сайт злоумышленника всевозможную информации о юзере, в худшем - запускать на компьютер юзера вирус любой сложности...
Причем, в случае обнаружения юзером такого вируса, как Вы думаете какова будет его реакция? :-)
В подтверждение своих слов могу сказать, что пару лет назад такая xss-атака была успешно произведена на сайт очень известного рунетовского онлайн предпринимателя, которому я сообщил о наличии активного "трояна" на главной странице спустя всего пару дней после его появления, однако, как я узнал позже, эта пара дней стоила потери более десятка подписчиков и активных покупателей.
А причиной всему был маленький javascript, взбунтовавшийся против своего хозяина...
Дыра №3 - Использование незащищенных почтовых email-форм.
Ну, об использовании скриптов с брешью в защите мы уже говорили чуть выше, сейчас же речь идет о менее опасном, но гораздо более неприятном явлении в интернете - о спаме и флуде. Немного теории:
Флуд (от искаженного англ. flood) — «потоп», «наводнение») — размещение однотипной информации, одной повторяющейся фразы, одинаковых графических файлов или просто коротких бессмысленных сообщений на веб-форумах, в чатах, блогах. Зачастую слово «флуд» используется как синоним слова «флейм».
Лицо, которое распространяет флуд, на интернет-сленге называется флудером.
Флуд распространяется как в результате избытка свободного времени, так и с целью троллинга — например, из желания кому-то досадить. Сетевой этикет осуждает флуд и флейм, так как они затрудняют общение, взаимопомощь и обмен информацией. На многих интернет-форумах создаются специальные отдельные разделы и темы «для флуда», чтобы флудеры не распространяли свою деятельность на другие разделы и темы.
С развитием служб доставки различных видов электронных сообщений, в интернете появилось новое понятие - спам. Под спамом принято понимать массовую несанкционированную рассылку рекламных электронных сообщений.
К сожалению, на практике для массовых или узко целенаправленных рассылок спамеры используют различные почтовые скрипты, расположенные непосредственно на интернетовских сайтах. Так, например, стандартная форма обратной связи, предназначенная для осуществления контакта между посетителями и администратором сайта, может быть использована также с целью рассылки спама или флуда.
Для того, чтобы этого не случилось, нужно хорошо обдумать обоснованность использования подобных скриптов на Вашем сайте, а если Вы все же решили их использовать, обязательно установите на них "капчу".
Капча (CAPTCHA) - компьютерный тест, используемый для того, чтобы определить, кем является пользователь системы: человеком или компьютером. Термин появился в 2000 году. Основная идея теста: предложить пользователю такую задачу, которую может решить человек, но которую крайне трудно научить решать компьютер. В основном это задачи на распознавание символов.
К сожалению, большинство скриптов почтовых форм игнорируют данную защиту, но Вы можете использовать один из предложенных мною скриптов:
Скрипт№1: http://click.e-professional.net/antipirates/antipirates_script1.html
Скрипт№2: http://click.e-professional.net/antipirates/antipirates_script2.html
При небольшом знании php "прикрутить" капчу к любому Вашему скрипту Вы сможете и самостоятельно. Дистрибьютив капчи можно взять здесь: http://www.captcha.ru
Дыра №4 - Использование прямых ссылок.
Ну, об этой дыре уже много писано, и в этом отчете уже вскользь упоминалось, однако все-таки проигнорировать данный сабж было бы неправильно...
Одной из основ онлайн бизнеса, построенного на продаже информационных товаров (в смысле файлов электронных книг, mp3, флэш-видео и т.п.) является закрытый доступ к приватным материалам особой ценности. И даже если какую-то часть этих приватных материалов Вы в качестве бонуса отдаете своим подписчикам в подарок, то, наверное, за это Вы хотите, чтобы они соблюдали определенные правила, например, не давали прямую ссылку для скачивания материалов Вашей рассылки, а предлагали подписаться и прочитать информационный выпуск полностью, не так ли?
Но, на практике, только малая часть людей добровольно следует просьбам и правилам, мягко упоминаемым в диспозитивной форме, типа: "Будьте любезны, если Вас не затруднит, не давайте прямых ссылок на файлы выпуска, лучше дайте ссылку на сам выпуск, пожалуйста!", гораздо эффективней, когда юзер просто не имеет возможности крысятничать, и потому следует столь же вежливым, но уже императивным правилам Вашего сайта.
На самом деле, как всегда это и бывает, все, что нужно сделать, чтобы доступ к любому файлу Вашего информационного выпуска рассылки, был возможен только из интернет страницы самого выпуска, это добавить в html-код страницы маленький скрипт: urlaliaser
Это свободно распространяемый яваскрипт "Url Aliaser" в некоторой доработке Вашего покорного слуги... ;-)
Принцип работы скрипта очень простой:
Вы кладете в папку с html-страницей выпуска файл urlAliaser.js, а в коде самой страницы добавляете между тегами <head> и </head> следующий код:
<script>
<!--
//ДОБАВЬТЕ СТРАНИЦЫ (САЙТЫ) С КОТОРЫХ ТОЛЬКО И МОЖНО НАПРЯМУЮ СКАЧАТЬ ФАЙЛ ИЛИ ПОПАСТЬ НА СТРАНИЦУ (неограниченное количество)
var validreferrals=new Array()
validreferrals[0]="demo.htm"
validreferrals[1]="прекрасная_страница.htm"
for (r=0;r<validreferrals.length;r++){
if (document.referrer.indexOf(validreferrals[r])!=-1){
var passed=1
break
}
}
//-->
</script>
<script src="urlAliaser.js" type="text/javascript"></script>
<script type="text/javascript">
new UrlAliaser([
["eprofessional", "http://e-professional.net"],
["smartresponder", "http://delphicomponent.ru/smartresponder.html "]
]);
</script>
В коде скрипта указываются страницы, с которых разрешен прямой доступ к алиасеру - это для того, чтобы сделать возможным прямой доступ к алиас-ссылке, например, из другого выпуска Вашей рассылки.
Для того, чтобы добавить разрешенную страницу, просто добавьте с новой строки код validreferrals[i]="название страницы.htm", где i - номер по порядку.
Преимущество приведенного выше скрипта в том, что он будет работать где угодно, даже на бесплатном хостинге, а также в том, что позволяет адресовать юзера, пришедшего с внешнего ресурса, на ту страницу, на которой данная ссылка должна располагаться, однако, есть и более простой вариант защиты от внешних ссылок на Ваш ресурс - создание специальной директивы в .htaccess
В случае использования данного метода, отредактируйте или добавьте в корневую папку сайта файл .htaccess следующего содержания:
RewriteEngine on
# Если юзер зашел с сайта, а не ввел url-адрес вручную, RewriteCond %{HTTP_REFERER} !А$
# и если это не сайт http://delphicomponent.ru,
RewriteCond %{HTTP_REFERER} !Ahttp://(www.)?e-professional\.net/.*$[NC,OR]
# и не сайт http://htaccess.net.ru,
RewriteCond %{HTTP_REFERER} !Ahttp://(www.)?htaccess\.net\.ru/.*$[NC]
# и не страница free-download.html (любого домена), RewriteCond %{HTTP_REFERER} !.*/free-download\.html$
# то указываем к каким файлам ему запрещен доступ, и на какую страницу его адресовать...
RewriteRule .(css\mov\swf\dcr\exe\rar\avi\zip)$ index.html
Теперь разберемся чуть подробнее...
# Если юзер зашел с сайта, а не ввел url-адрес вручную, RewriteCond %{HTTP_REFERER} !А$
Данная директива означает, что если человек зашел не по ссылке с другого домена, а ввел url-адрес вручную, то мы его не блокируем. Это сделано для того, чтобы не сбить с толку Ваших подписчиков и клиентов, которые могут скопировать ссылку себе на компьютер и воспользоваться ею немного позже.
# и если это не сайт http://delphicomponent.ru,
RewriteCond %{HTTP_REFERER} !Ahttp://(www.)?e-professional\.net/.*$[NC,OR]
# и не сайт http://htaccess.net.ru,
RewriteCond %{HTTP_REFERER} !Ahttp://(www.)?htaccess\.net\.ru/.*$[NC]
Здесь Вы указываете сайты, с которых доступ к Вашим файлам открыт. В примере свободный доступ к файлам разрешен с двух доменов: delphicomponent.ru и htaccess.net.ru. Если Вы хотите сделать доступ только со своего сайта (со своего домена), то уберите первую строку с адресом домена и оставьте только вторую.
Важно, чтобы в последней строке с разрешенным доменом в конце между квадратными скобками было прописано только "NC".
Если, наоборот, Вы захотите сделать больше доменов, с которых доступ разрешен, то скопируйте по аналогии первую строку с разрешенным доменом, и вставьте ее вперед ПЕРЕД остальными. Директива в квадратных скобках в конце строки должна выглядеть так: [NC,OR]
Вот пример:
RewriteCond %{HTTP_REFERER} !Ahttp://(www.)?ВАШ_САЙТ\.ru/.*$[NC,OR]
# и если это не сайт http://delphicomponent.ru,
RewriteCond %{HTTP_REFERER} !Ahttp://(www.)?e-professional\.net/.*$[NC,OR]
# и не сайт http://htaccess.net.ru,
RewriteCond %{HTTP_REFERER} !Ahttp://(www.)?htaccess\.net\.ru/.*$[NC]
Обратите внимание, что перед всеми точками в адресе домена ставится обратный слеш (\).
# и не страница free-download.html (любого домена), RewriteCond %{HTTP_REFERER} !.*/free-download\.html$
А приведенная выше директива очень интересна тем, что Вы можете указать не имя разрешенного домена, а имя разрешенной страницы. В этом случае, если ссылка на файл будет находится на странице, например, free-download.html любого сайта, то с нее юзер спокойно скачает файл без каких-либо проблем.
# то указываем к каким файлам ему запрещен доступ, и на какую страницу его адресовать...
RewriteRule .(css\mov\swf\dcr\exe\rar\avi\zip)$ index.html
Ну и последняя директива - файлы, которые мы защищаем от несанкционированного доступа - (css|mov|swf|dcr|exe|rar|avi|zip), и страница, на которую адресуются непрошенные гости - index.html
Также с помощью .htaccess можно очень эффектно защитить Ваш коммерческий продукт на продающем мини-сайте. Так, если Вы уверены, что на страницу успешной оплаты Ваш магазин не пустит юзера иначе, как после успешной оплаты (простите за тавтологию), Вы можете задать директиву, позволяющую скачать файл с информационным продуктом только по ссылке с этой страницы:
# Указываем url-адрес страницы, с которой файл можно скачать...
# В примере: http://delphicomponent.ru/pay.html
RewriteCond %{HTTP_REFERER} !Ahttp://(www.)?e-professional\.net/pay.html$ [NC]
# Указываем имя файла, на который данная директива распространяется... (в примере: filename.zip)
# Указываем страницу, на которую адресуем непрошенного гостя... (в примере: index.html)
RewriteRule filename.zip$ index.html
Файл с приведенными директивами кладем в одну папку с защищаемым файлом или в корень сайта...
Дыра №5 - Небрежное хранение паролей.
Данная дыра относится не столько к самому сайту, однако, приводит к очень плачевным последствиям...
Как Вы думаете, как хакер узнает самые главные пароли: ftp-доступа к сайту, доступа к аккаунту в платежной системе, доступа к платным (и потому напрямую менее доступным) почтовым ящикам?
Ответ элементарен - из бесплатных источников хранения информации. Что это за источники?
В основном почтовые ящики на бесплатных сайтах типа Яндекса, Mail.ru и иже с ними, а также всевозможных общественно бесполезных icq, скайпов, ВКОНТАКТЕ и т.п.
Дело в том, что из-за своей популярности все вышеперечисленные сайты и сервисы неминуемо подвержены активной атаке, а значит любая информация, которая лежит на сервере такого сайта находится в опасности кражи.
Вы можете сами поискать инфу по взлому emails, icq, скайпов и социальных сетей и убедиться, что даже прыщавый девятиклассник-имбицил способен несанкционированно получить Вашу приватную информацию...
Избежать неприятных потерь элементарно:
Во-первых, старайтесь не передавать секретную информацию через незащищенные сети.
Во-вторых, не храните подобную информацию на интернет-серверах. Практически все сайты, сервисы и платежные системы высылают ключи, логины и пароли Вам на e-mail. Скопируйте эти данные после получения себе на компьютер в надежное место и удалите данное письмо или сообщение с сервера.
В третьих, заведите для получения особо приватных писем отдельный e-mail, который не сообщается никому и нигде не публикуется.
В четвертых, не экономьте на комфорте и безопасности. Для серьезной корреспонденции заведите себе платный email-ящик на надежном почтовом сервере.
Ну и в пятых, лучше сохраняйте подобную информацию на физический носитель (например, флешку) и храните в надежном месте.
Конечно, кто-то посчитает это паранойей, однако же по мере роста и расширения Вашего онлайн бизнеса, а значит и увеличения Ваших прибылей на нули в конце цифры, Вам мои советы покажутся вполне оправданными!

0 коммент.:
Отправить комментарий