ПредишенСледващото

Рецепти за програмиране в PHP или практически съвети Програмиране → предпази сайта от атака, или малко на скриптове към сайт (XSS)

XSS - включили напречно сайт (Sross сайта Ssrirting) - уязвимост тип Sata използва, когато хакер атака.

Спецификата на такава атака е, че лошите момчета използват уязвимо място като средство за атака на клиента. XSS атака обикновено се осъществява чрез изграждане на специален URL адрес. което прави нападателя на жертвата, или под формата на специален вмъкнете HTML-символи.

XSS е сега възлизат на около 15% от всички сайтове, открити уязвимости.

Ако скриптовете не са защитени, хакер ще бъде в състояние да се справят. Например, за да се отстрани или да замени файлове на вашия сървър, за да влязат в своите бази данни и промяна на данни, паролата на потребителя, или да използвате вашия сайт за изпращане на спам. И още много други.

100% защита не съществува, но ще дам някои практически препоръки.

Защита срещу маска URL (метод $ _GET)

Всичко, което получава сценария трябва да бъдат проверени за валидност в низа URL адрес.

На първо място, трябва да конфигурирате .htaccess - даде възможност за сканиране на знаци, които в един URL низ. Ако целия си сайт, дръжки един скрипт (index.php), можете да го направите:

RewriteRule ^ ([A - z0 - 9 / _ -] *) индекс $. PHP [L. QSA]

В този случай, в адреса е позволено само латински букви, характера "/" като разделител на директорията, в долната тире и тире. Всички други URL ще доведе до грешка, а сценарият ще бъде прекратено.

Ако адресът е трябвало да се прехвърли на параметрите (които изглеждат по-малко красив и визуално), е необходимо да се добави регулярен израз. и (Да не забравяме да избяга тези знаци).

Сега за много index.php файла, който получава в началото на низа URL адрес.

$ Auri = взривят ( "/" strtolower ($ _SERVER [ 'REQUEST_URI']).);

След отстраняване на първите два елемента, които съдържат протокола и домейн, на първия елемент на масива вече съдържа името на първата директория.

$ Анави = масив ( "Новини", "снимки", "За Мен" "Контакти" ...);

Сега е лесно да се провери основателността на каталога:

$ Dir = array_shift ($ Auri);

ако (! $ реж) ехо "Дошли сте на главната страница на сайта";

ElseIf (. in_array ($ реж $ Анави)) ехо "Вие сте в капан в раздел $ реж";

друго ехо "Тази страница не разполагаме";

Освен това, ако указаното следващото ниво, да проверява неговото коректност. Всичко зависи от структурата на връзки, които имате предвид, за да се направи на сайта си.

Ако по-необичайно и трябва да бъдат посочени редица, проверете дали то е положително число.

$ Т = array_shift ($ Auri);

ако (! $ т) ехо "Това е списък на новини / снимки";

ElseIf ($ т (Int) $ т> 0) ехо "Това е новина / снимка №" (инт) $ т .;

друго ехо "Тази страница не разполагаме";

Защита срещу смяна във формата и заявки към базата данни

Нека се опитаме да напишете проста клас, които ще бъдат ангажирани в почистването на стойностите, получени от потребителя.

функция хигиенизирам ($ Val)

Подкрепете проекта - споделете линка, благодаря!