Привет, парни! Прошу помощи профи! Запарился курить маны и изучать веб-секурити... Короче, проблема в том, что нужно организовать избирательный вход юзеров в секцию сайта, которая изначально была предназначена для "избранных", доступ которым был разрешен туда (в директорию сайта) посредством стандартной HTTP-авторизации. Нужно изменить поведение таким образом, чтобы юзверьё, которое на "морде сайта" получает авторизацию по типу форумной (те через проверку логина-пароля по БД юзверей) могло войти в секурную секцию БЕЗ ВВОДА логина-пароля этой секции. //Это чтобы он/она НЕ ЗНАЛИ НИКАКИЕ пары логин-пароль закрытой секции - "что знают двое, знает свинья!" (с) Мыслится это так: - для юзверья в эту секцию заводится "общая" HTTP-авторизация с одним логином-паролем (скажем, useres/3jdie74d); - при прохождении любого юзера "обычную" процедуру аутентификации и при таргетинге его в закрытую секцию он перенаправлятеся пхп-скриптом туда - но с предварительной ПРИНУДИТЕЛЬНОЙ HTTP-авторизацией; - в закрытой секции юзеру предоставлено скриптами операции лишь те, которые соотв. его статусу (проверить несложно: $_SERVER['REMOTE_USER'] несёт в себе логин при входе в секцию с HTTP-авторизацией юзверьё - всё под одним логином, при том все "привелигированные" - под иными логинами, различными и отличными от useres, и поэтому "отделить овец от козлищ" проще пареной репы... Идея ясна и проста, не правда ли? А вот с реализацией - полный затык! ;( Начал с того, что зная возможность утилиты wget осуществлять принудительную HTTP-авторизацию (см скажем здесь: http://forum.ixbt.com/topic.cgi?id=24:7978 - см в самом конце: "Пример ниже демонстрирует, как авторизоваться на сервере, используя POST...") я пытался осуществить это же посредством header() с теми или иными заголовками - провал! Сколько не крутил и ни читал манов - не смог осуществить это. Не нахожу я заголовков ф-ции header, которые могли бы сделать то же самое под PHP... А скажем нагло вызывать wget из пхп не могу - сервер не выделенный и хостер не разрешает юзать вызовы никаких "внешних" программ из пхп... Что посоветуете, парни? Жду - дело застопорилось...
Дык всё описано подробно! Что показать? Ни одного заголовка похожего на то что можно вставить в wget (как было показано в примере по ссылке) - чтобы впихнуть в header(), - в манах к своему удивлению не обнаружил... А если "легко" - так и приведи примерчик плиииз! Или ссылку на описалово как делается http-авторизация через вызов header()
Короче, разобрался с помощью найденного правильного 850 страничного мана: "Технология защиты информации в Интернете" (Специальный справочник). Стр 582 - "Схема Basic". Не получится в реализации моя задумка - увы, была идея красива и кажущаяся верной, но померла молодой - 1 дня от роду!.. А суть в том, что ни какими средствами - не пхп ни вгетом, не заставить юзерский браузер "отдать" нужные логин-пароль по запросу сервера - все равно будет вылезать панелька хттп-авторизации. Так что вопрос закрыт - сам спросил - сам ответил! Идея как оказалось была мертворожденная - концептуально неправильная, как показало вскрытие.
Код (Text): master(root):/usr/www/#>wget --help | grep http | head -4 | tail -2 --http-user=USER set http user to USER. --http-password=PASS set http password to PASS. Код (Text): master(root):/usr/www/#>curl -v "http://440hz:441hz@php.ru" * About to connect() to php.ru port 80 (#0) * Trying 77.234.201.222... connected * Connected to php.ru (77.234.201.222) port 80 (#0) * Server auth using Basic with user '440hz' > GET / HTTP/1.1 > Authorization: Basic NDQwaHo6NDQxaHo= > User-Agent: curl/7.18.0 (amd64-portbld-freebsd7.0) libcurl/7.18.0 OpenSSL/0.9.8e zlib/1.2.3 > Host: php.ru > Accept: */* > < HTTP/1.1 302 Moved Temporarily < Server: nginx/0.5.33 < Date: Mon, 22 Jun 2009 19:36:15 GMT < Content-Type: text/html < Content-Length: 161 < Connection: keep-alive < Keep-Alive: timeout=5 < Location: http://www.php.ru/ < <html> <head><title>302 Found</title></head> <body bgcolor="white"> <center><h1>302 Found</h1></center> <hr><center>nginx/0.5.33</center> </body> </html> * Connection #0 to host php.ru left intact * Closing connection #0
Это что, - так "к слову"? Суть то какова? То что "вставляется", и не было проблемой или незнаемым, дело как оказалось концептуального свойства... А все-таки - вопрос "на засыпку" Хакерам или "хакерам" - можно ли заставить каким-нить способом __юзерский__ бровзер принудительно авторизоваться стандартной хттп-процедурой, сделав это со стороны сервера?