Проверка белого списка для http-запроса

Я пытаюсь создать фильтр запроса сервлета, который фильтрует любой входящий запрос на основе символов белого списка.

Я хочу принимать только те символы, которые соответствуют шаблону белого списка, чтобы злоумышленник не выполнил вредоносный код в виде скрипта или измененного URL-адреса.

Кто-нибудь знает, какие символы белого списка следует использовать для фильтрации любой строки HTTP-запроса?

Любая помощь будет оценена

Заранее спасибо


person androidDev    schedule 01.04.2015    source источник


Ответы (2)


Реализуйте механизм сопоставления шаблонов для поиска символов белого списка из шаблона URL-адреса с помощью RegEx..

Перейдите по этой ссылке 1.

Или вы можете попробовать:

if (inputUrl.contains(whiteList)) {
  // your code goes here
}

Или, если вам нужно знать, где это происходит, вы можете использовать indexOf:

int index = inputUrl.indexOf(whiteList);
if (index != -1) // -1 means "not found"
{
    ...
}

Спасибо,

~Чандан

person Chandan Prakash Sharma    schedule 01.04.2015
comment
Спасибо Chandan за ответ... Regex можно использовать для генерации регулярных выражений, так как я новичок, я понятия не имею, какие символы следует использовать для проверки белого списка.... - person androidDev; 01.04.2015
comment
~ приветствую, androidDev, не могли бы вы дать представление о своем белом списке (какой шаблон, правила вы хотите для него) - person Chandan Prakash Sharma; 01.04.2015
comment
Я использую структуру struts, где я хочу проверять каждый входящий запрос, поступающий по URL-адресу, поэтому я ищу регулярное выражение, которое я могу использовать для проверки URL-адреса в белом списке. - person androidDev; 01.04.2015

Проблема в том, что «вредоносный» — это очень широкое понятие. У вас должно быть четкое представление о том, от каких типов атак вы пытаетесь защититься, а затем принять меры для их предотвращения.

Вы не можете указать набор символов вообще, которые нужно отфильтровать, вам нужно знать домен, в котором будет использоваться ваш ввод в url. Как правило, опасен не сам URL-адрес, а параметры URL-адреса, которые предоставляются вашими пользователями, а затем интерпретируются вашим приложением. В зависимости от того, как ваше приложение будет использовать этот ввод, вам необходимо принять определенные меры предосторожности. Так, например:

  1. Параметр URL используется для определения цели перенаправления. Пользователь может использовать это для перехода жертвы на вредоносный сайт, сайт, который маскируется под ваш сайт, но крадет учетные данные пользователей, предоставляя ложные учетные данные, и так далее. В этом случае вы должны составить белый список разрешенных направлений, ожидаемых вашим приложением, и запретить другим. См. первую десятку OWASP — Непроверенные перенаправления и перенаправления.
  2. Вы сохраняете данные из параметра URL в БД. Вы должны предотвратить внедрение SQL с помощью параметризованных запросов. См. таблицу OWASP SQL-инъекций,
  3. Данные параметров URL будут отображаться в формате html. Вы должны дезинфицировать свой html каким-нибудь уже проверенным дезинфицирующим средством, таким как дезинфицирующее средство html OWASP или AntiSamy, чтобы предотвратить Межсайтовый скриптинг.

И так далее...

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

Хорошим началом для общего обзора проблем безопасности и мер защиты от них является ТОП-ДЕСЯТКА OWASP. Затем я рекомендую несколько более подробных руководств и ресурсов, предоставленных owasp.

person Vojtech Ruzicka    schedule 02.04.2015