Меры безопасности при поиске по сайту - PullRequest
1 голос
/ 03 декабря 2009

Несколько лет назад я запрограммировал сайт в стиле журнала в ColdFusion. У него была функция поиска по сайту для полнотекстового поиска (с использованием SQL Server) статей и сообщений в блогах. Это работало нормально, но затем нас атаковала атака SQL (моя вина). Владелец сайта решил прекратить поиск и только недавно попросил меня снова запустить его.

Я знаю, что мне нужно было использовать CFQUERYPARAM для остановки SQL-инъекций, и я исправил этот аспект кода. Мой вопрос: что еще я должен сделать, чтобы сделать поиск на сайте достаточно безопасным? Я не говорю о героических мерах, просто основные вещи, которые я не должен забывать. Спасибо.

Ответы [ 6 ]

7 голосов
/ 03 декабря 2009
  • cfqueryparam
  • обработка ошибок вокруг отдельного запроса
  • обработка ошибок для сайта через <cferror>
  • логика, ограничивающая количество запросов, поступающих с определенного IP в данный момент времени
  • убедитесь, что учетная запись пользователя базы данных имеет доступ только к определенным действиям, которые она должна
  • логика, которая гарантирует, что поисковый запрос поступает с вашего сайта, а не от сторонней организации
  • ограничить количество результатов поиска (используйте нумерацию страниц)
  • ограничить длину входного поиска (макс. 30?)
1 голос
/ 06 декабря 2009

Используйте только хранимые процедуры для изменения данных. Ограничьте учетную запись пользователя базы данных, чтобы иметь возможность использовать только представления (для которых вы можете иметь разрешения только для чтения.) Установить источник данных, чтобы разрешить только выбирать и выполнять (procs) Всегда используйте cfqueryparam Размещайте запросы внутри cfc и всегда используйте правильные типы аргументов. Используйте дезинфицирующее средство для проверки струн на предмет инъекций.

И, конечно, # 1 резервное копирование вашей БД или на регулярной основе!

0 голосов
/ 22 декабря 2009

Вы также можете добавить капчу к поиску, чтобы убедиться, что она управляется человеком. Тогда вы не будете изнашивать свой сервер или базу данных, пытаясь найти ответы на автоматизированные запросы.

0 голосов
/ 03 декабря 2009

Я могу подумать только о том, чтобы проверить, что все ссылки (доступные функции, последовательности операций и т. Д.), Доступные в результате поиска, либо безопасны, чтобы быть общедоступными, либо защищены на необходимом уровне, например:

0 голосов
/ 03 декабря 2009

Вы можете избежать инъекций sql, используя CFQUERYPARAM.

Еще одна вещь, о которой вы должны быть осторожны, - избегать отказа в обслуживании. Однажды я увидел атаку, основанную на отправке глупых запросов на сайт, что-то вроде «все тексты, содержащие букву» и тому подобное.

Ограничение количества результатов на странице - хорошая альтернатива, чтобы избежать подобных проблем.

0 голосов
/ 03 декабря 2009

Помимо использования params, вы можете проверить ввод на наличие странного текста (html code, 'tags ect ...) ограничить его в длине (разумно, что поиск не будет превышать определенное количество символов)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...