Мой вопрос очень похож на этот Return “correct” error code, or protect privacy?, но я хотел бы услышать несколько разных ответов.Http 403 или 404 для доступа к ограниченному ресурсу WEB?
У нас есть WEB-сайт, большинство страниц которого могут быть посещены неавторизованным пользователем. Но когда пользователь не выполнил вход в систему, пользователь пытается получить доступ к ресурсу (страница), требующему авторизации (пользователь должен иметь роль FooRole), мы автоматически перенаправляем его на страницу входа в систему и после предоставления правильных учетных данных возвращаются к ограниченным ресурсам. Какой веб-сайт должен делать, если пользователь предоставил правильные учетные данные, но его права доступа оказались недостаточными (у него есть BarRole, но не FooRole)?
В текущей реализации мы возвращаем ответ HTTP 403 (запрещен). Но некоторые разработчики утверждают, что код 404 должен быть возвращен, поскольку он обеспечивает лучшую защиту. Пользователь не должен отличать существующие и недоступные ресурсы. С точки зрения безопасности, возможно, лучше вернуть 404, но в описанной ситуации пользователь был перенаправлен на страницу входа и что поведение «подсказывает», что такая страница существует, поэтому она не очень логично возвращает 404 (это мои мысли). Если пользователь уже авторизовался и пытается получить доступ к ограниченным ресурсам (напрямую изменяя URL), то, возможно, он может логически вернуть ошибку 404.
Может быть, такая функция автоматического перенаправления на вход не работает? Можете ли вы предложить мне, какое поведение более «стандартное/хорошее/удобное для пользователя/без взлома» в такой ситуации?
Спасибо!
Возможный дубликат [403 Запретный vs 401 Несанкционированные HTTP-ответы] (http://stackoverflow.com/questions/3297048/403-forbidden-vs-401-unauthorized-http-responses) – kenorb