Как да се определи, че сайтът е бил подложен на SQL инжекция - всичко за уеб дизайн на

Как да се определи, че сайтът е бил подложен на SQL инжекция - всичко за уеб дизайн на
На главната услуга основната ми работа се провали. Аз трябва да кажа, че е много критичен за нашата компания.

Анализ на трупите показа, че е претърпял SQL инжекция използват злонамерен софтуер в една от заявки SQL на сайта.

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

За това как съм решен този проблем и ще се обсъждат в тази статия.

Да започнем с това, малко образователна програма, която е SQL инжекция.

Какво е SQL инжекция

Вземете една псевдо код

Има една проверка, която intval трябва да връща цяло число, и ако не е номер едно число, условието не работи и искането няма да бъде изпълнен.

И това е истински произведения ако направите такова искане

условието не е изпълнено: intval ( "нови") връща 0.

Изглежда, че това е достатъчно. Но въпросът е какво ще се случи на следващия искане

Следователно отвора за сигурност. Чрез нея можете да поставите всяка SQL заявка. До изтриете от новини

Методи за справяне с SQL инжектиране

Най-сигурният начин да се противодейства на този вид атака - прожекция на всички неща. Т.е. всички променливи, които се вмъкват в кода преминали през функцията mysql_real_escape_string

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

Аз не дублира код, за да се провери, но това също не е в кома случай не трябва да се пропуска. Просто проверете променлива, отколкото да принуди MySQL сървър за извършване на допълнителна заявка.

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

С тяхна код ясно. Тук ние сме господари на положението. В една или друга степен голям проект използва голям брой библиотеки на трети страни или приложения: ckeditor, ckfinder, JQuery плъгини. берачи, опаковчици, daunloudery, статистика система, PhpMyAdmin и т.н.

И те също имат дупки. Редактиране на ръцете си възможността да се каже не, и ако нещо не е желателно да се направи това.

Тя е много по-лесно да се запази ресурсът като цяло. Например, моят любим CMS Danneo. то се осъществява на ниво API и в искането за GET или POST, просто не можете да поставите ключови думи за SQL запитвания.

Наред с другите неща, този код ви предпазва от други атаки, CSS, и т.н.

В резултат на това, ако заявката е забранена думи, кодът ще върне грешка 500 и ще хвърли изключение. Това не е най-доброто решение. Ако всичките си бягство код променливи, и това е добре, че няма да е излишно да информира администратора на опитите за инжектиране и да се даде на някой хакер например 404.

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

този скрипт своевременно ме предупреждава за опитат да проникнат в живота ми. Използването на информация от писмото, можете да блокирате злонамерени или IP да изследва тези места, в които има нападение.

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

Желая ти късмет в тази опасна професия)