Веб-сервер Apache по умолчанию блокирует переменную среды HTTP_AUTHORIZATION
для приложений CGI, которую PHP использует для заполнения PHP_AUTH_USER
/ PASS
.Это поведение можно отключить, перекомпилировав Apache с установленным флагом SECURITY_HOLE_PASS_AUTHORIZATION .
«Дыра безопасности» заключается в том, что любые другие пользователи на общем сервере смогут видеть пароли пользователейаутентификация на вашем сайте.Является ли это на самом деле дырой в безопасности для вас, зависит;часто нет.
Если вы работаете на дешевом общем сервере, скорее всего, у вас не будет возможности перекомпилировать Apache.
Знаете ли вы, можно ли использоватьработать примерно так:
Да, так и должно быть, если у вас есть mod_rewrite
в наличии.(Предостережения о том, что это потенциально «дыра в безопасности», все еще применимы.)
Это, однако, некрасиво и усложняет развертывание.Также есть несколько проблем с приведенным примером сценария (использование explode
отбрасывает любые символы :
в пароле, а echo
s без правильного использования htmlspecialchars()
представляет уязвимость XSS.)
Такая ерунда является одной из причин, по которой HTTP-аутентификация становится все более непопулярной.На большинстве сайтов вместо этого используется аутентификация на основе форм и файлов cookie.Для API вы, как правило, имеете собственную аутентификацию на основе токенов, а не полагаетесь на обычную аутентификацию.