Всем привет.
Занимаюсь тестированием веб-сервиса.
Стал вопрос о безопасности. Никогда таким не занимался, поэтому интересует все.
Подскажите пожалуйста что можно почитать по этому вопросу, какие инструменты использовать и т.д.
![Фотография](https://software-testing.ru/forum/public/style_images/master/profile/default_large.png)
тестирование безопасности веб-сервиса
Автор soleksenko2702, 30 мар 2012 11:21
В теме одно сообщение
#1
Отправлено 30 марта 2012 - 11:21
#2
Отправлено 01 апреля 2012 - 17:44
Веб-сервисы бывают очень разные.
В зависимости от способа реализации, от типа аутентификации надо подбирать свои инструменты.
Есть широко-используемые инструменты, как soapui (см. soapui.sourceforge.net или http://www.soapui.org/ ). В целом это не инструмент для тестирования безопасности (для нагрузочного тестирования), но можно посылать запросы и смотреть ответы.
Для тех же целей использовал другой инструмент на Java - webscarab (см. https://www.owasp.or...x.php/Webscarab )
Но сейчас больше нравится способ с написанием своего клиента. Это как модульное тестирование, только модульный тест специфичный (на безопасность) и его пишет программист отдела тестирования, а не отдела разработки. Способ долгий. Но иногда не обойтись готовыми инструментами. Например, используется KerberOS, NTLM, или ещё что-либо, что не поддерживается инструментом тестирования, и нельзя отключить KerberOS на сервере.
Или есть в системе есть веб-сервис, но он для внутреннего использования приложения, послать запрос извне сложно (сделать всё, чтобы не так нельзя было сделать). Или можно, но явно проще написать на стороне сервера html/jаvasсript страничку, которая будет принимать и выполнять тесты, посылая запросы к json-веб-сервису ($.ajax({type: "POST", ... })), а результат выполнения смотреть в консоли Firebug или в Fiddler2 (так проще сделать, чем руками вставлять в каждый запрос soapiu или webscarab идентификатор сеанса, получаемый отдельно - тут надо будет просто авторизоваться в приложении, перейти на тестовую страницу и активировать тесты для данного пользователя).
Ещё существует фаззинг. Но так и не попробовал ни один из готовых инстурментов для фаззинга именно веб-сервисов. Как обычно, не было на это времени. Вот если писать свой модульный тест на безопасность, то там как раз и выполняется фаззинг (но упрощённый, по сравнению со специализированными инстурментами).
А как тестировать?
Проверить на отсутствие важнейших уязвимостей: http://cwe.mitre.org/top25/
А также проверить безопасность бизнес-логики (различные хитрые права доступа, наследование прав, неявные параметры работы).
Также, особенно, если разработчики сами так не сделали, то надо прогнать исходники через статический сканер, пускай он поставит маячки - где вероятна SQL-инъекция, где XSS, где явное отсутствие проверки результата выполнения вызываемой функции, ...
Бывает, что исходники доступны только разработчиками. В случае Python/PHP это не проблема. В случае с .NET и Java - тоже не большая проблема, декомпилировать и прогнать через анализатор получится (как раз выполнится текст на возможность декомпиляции важных участков кода). И даже VisualBasic с Delphi сносно декомпилируются в ряде случаев, но тут лучше официально попросить исходники.
В зависимости от способа реализации, от типа аутентификации надо подбирать свои инструменты.
Есть широко-используемые инструменты, как soapui (см. soapui.sourceforge.net или http://www.soapui.org/ ). В целом это не инструмент для тестирования безопасности (для нагрузочного тестирования), но можно посылать запросы и смотреть ответы.
Для тех же целей использовал другой инструмент на Java - webscarab (см. https://www.owasp.or...x.php/Webscarab )
Но сейчас больше нравится способ с написанием своего клиента. Это как модульное тестирование, только модульный тест специфичный (на безопасность) и его пишет программист отдела тестирования, а не отдела разработки. Способ долгий. Но иногда не обойтись готовыми инструментами. Например, используется KerberOS, NTLM, или ещё что-либо, что не поддерживается инструментом тестирования, и нельзя отключить KerberOS на сервере.
Или есть в системе есть веб-сервис, но он для внутреннего использования приложения, послать запрос извне сложно (сделать всё, чтобы не так нельзя было сделать). Или можно, но явно проще написать на стороне сервера html/jаvasсript страничку, которая будет принимать и выполнять тесты, посылая запросы к json-веб-сервису ($.ajax({type: "POST", ... })), а результат выполнения смотреть в консоли Firebug или в Fiddler2 (так проще сделать, чем руками вставлять в каждый запрос soapiu или webscarab идентификатор сеанса, получаемый отдельно - тут надо будет просто авторизоваться в приложении, перейти на тестовую страницу и активировать тесты для данного пользователя).
Ещё существует фаззинг. Но так и не попробовал ни один из готовых инстурментов для фаззинга именно веб-сервисов. Как обычно, не было на это времени. Вот если писать свой модульный тест на безопасность, то там как раз и выполняется фаззинг (но упрощённый, по сравнению со специализированными инстурментами).
А как тестировать?
Проверить на отсутствие важнейших уязвимостей: http://cwe.mitre.org/top25/
А также проверить безопасность бизнес-логики (различные хитрые права доступа, наследование прав, неявные параметры работы).
Также, особенно, если разработчики сами так не сделали, то надо прогнать исходники через статический сканер, пускай он поставит маячки - где вероятна SQL-инъекция, где XSS, где явное отсутствие проверки результата выполнения вызываемой функции, ...
Бывает, что исходники доступны только разработчиками. В случае Python/PHP это не проблема. В случае с .NET и Java - тоже не большая проблема, декомпилировать и прогнать через анализатор получится (как раз выполнится текст на возможность декомпиляции важных участков кода). И даже VisualBasic с Delphi сносно декомпилируются в ряде случаев, но тут лучше официально попросить исходники.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных