Привет всем, Я запускаю веб-сайт для размещения изображений, и я разрабатываю API для него. Меня беспокоит то, что я не хочу, чтобы кто-нибудь в состоянии сделать что-то вроде:Как защитить API от злоупотреблений?
while(true) {
Upload();
}
и спама/DoS сайта.
Мое текущее решение - ограничить все IP-адреса определенным количеством загрузок в день/час. Я считаю, что это отлично подходит для настольных приложений, которые будут использовать API, но для веб-сайтов, которые хотят его использовать, все пользователи будут иметь один и тот же IP-адрес (сервер).
Я полагаю, что лучшим решением было бы иметь учетные записи пользователей, которые аутентифицируются с помощью API, а затем запрещать каждую учетную запись, если они злоупотребляют ею. Проблема в том, что у моего сайта нет учетных записей пользователей, все это полностью анонимно.
Что еще можно сделать? Я хотел бы держать все как можно более открытым, и в то же время иметь возможность запрещать пользователей/IP-адреса, которые явно злоупотребляют службой.
Возможно, ваши сторонние сайты-партнеры могут украсить запрос исходным IP-адресом, например HTTP-заголовок X_FORWARDED_FOR? –
Возможно, функции анти-DoS встроены в (настраиваемый) веб-сервер и, следовательно, не должны быть в веб-приложении? – ChrisW
ChrisW: Нет, DoS может возникать на нескольких уровнях приложения; скажем, блокировать все учетные записи пользователей и т. д. На этом уровне необходимо обслуживать. –