За життя

Прикрутил к сайту, использующему продукт Bitrix: Управление Сайтом, правильную работу через HTTPS.

Дано: сайт на Apache + nginx, SSL сертификат.

Требуется: сделать так, чтобы логин и доступ к некоторым секциям сайта происходили только по HTTPS.

Решение:

1. При использовании nginx, по крайней мере так, как нам его настроил хостер, HTTPS запросы обрабатывает сам nginx, который посылает запросы апачу по обычному соединению (чтобы не плодить ненужных сущностей). Поэтому у сервера не будет определена $_SERVER["HTTPS"]. Решением является прописать в nginx.conf, в секцию, посвященную SSL'у, строки "proxy_set_header X-HTTPS 'on'; " . Этот кастомный заголовок потом увидит скрипт, приведенный ниже.

Если у вас нету nginx'а, а SSL запросы обрабатывает апач, то вышеприведенное не нужно, а нижеследубщий скрипт нужно будет изменить.

2. В /bitrix/php_interface/init.php прописываем

AddEventHandler("main", "OnBeforeProlog", "OnBeforePrologHandler", 10, $_SERVER['DOCUMENT_ROOT'].'/my_scripts/check_ssl.php');

3. В check_ssl.php пишем (обязательно читайте комментарий ниже!!!)


function OnBeforePrologHandler(&$arFields)
{
if(defined("NEED_AUTH") && NEED_AUTH)
{
if ($_SERVER["HTTP_X_HTTPS"] != "on")
{
$link="https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
if ($_SERVER["QUERY_STRING"] != "")
$link = $link . "?" . $_SERVER["QUERY_STRING"];
LocalRedirect($link);
}
}
}
?>

Комментарий: переменная HTTP_X_HTTPS устанавливается как описано в шаге 1. Если у вас Апач честно ставит переменную $_SERVER["HTTPS"], то вы должны анализировать ее.

4. В нужных местах в коде страниц перед включением пролога пишете define("NEED_AUTH", true);

5. Следующий этап необходим, если у вас есть сторонние скрипты, которые проверяют HTTPS через $_SERVER["HTTPS"], а у вас nginx, как описано в шаге 1.
В httpd.conf или в аналогичный файл настроек apache'а пишем строку

php_value auto_prepend_file /path/to/prefix_file.php

А в prefix_file.php пишем

if ($_SERVER["HTP_X_HTTPS"] == "on")
$_SERVER["HTTPS"] = "on";
?>

Этот префиксный файл будет исполняться перед всеми PHP скриптами, и будет устанавливать $_SERVER["HTTPS"]


После данных изменений вход на страницы, в которых требуется авторизация, будет всегда производиться через HTTPS.

UPD: хостер написал еще такой вариант:

nginx передает заголовок X-HTTPS=on
В apache в нужном сайте (eldos.com) добавь

>--------------- код -------------------
SetEnvIf SSL SSL HTTPS=on
>---------------------------------------

Это скажет php, что делать с SSL


Не проверялось.
В Windows XP был Outlook Express. Потом в Vista его переименовали в Windows Mail. В Windows 7 его убрали, вместо него предлагается Windows Live Mail, который нужно тянуть с сайта Microsoft отдельно. Поставил ... Те же яйца [куриные], только в профиль - бывший Windows Mail, обработаный напильником кривыми индийскими руками, после чего он стал глючнее и неудобнее. Одно хорошо - настройки учетных записей и сообщения он импортировал. Плохо, что не импортировал подписки на группы новостей (у меня их было штук 40).
Английский Windows 7 не ставится апгрейдом на русскую Vista (почему русская: она шла с ноутом, а я не имел украинской или английской под рукой, чтобы переставить, а потом лень было весь софт переустанавливать). Так было и с прошлыми версиями Windows, да, но я так надеялся... Теперь придется еще несколько лет с русской мучиться.
Одна відома шведська фірма розробляє програми силами внутрішніх програмістів. А от тестувати віддають в Індію. І це правильно - такі мавпи тільки тестувати і можуть, бо вони найкраще поставлять програму в невигідне становище. Програмувати вони не можуть в принципі - мозок побудований іншим чином.
Защита от inject SQL у них сделана просто фантастически - если в сообщении в HelpDesk встречаются слова (с любым интервалом или вставками между словами) create server или create procedure, то текст сообщения молча отправляется в /dev/null . Это вместо того, чтобы просто позаменять буквы в словах или еще как-то зашифровать текст, чтобы сервер его не воспринимал. По-моему, кто-то в Битриксе должен получить по шапке.
Виявляється, на сайті Microsoft досі можна скачати MS DOS 6.22, Windows 3.1 та 3.11, QuickBasic 4.5, Visual Basic 2.0 та Visual C++ 1.52.
(тим, хто не має відношення до програмування, не буде цікаво) Після підготовки чергового білду одного з наших продуктів з'ясувалось, що .NET Framework не хоче завантажувати збірку, написану на C++ .NET і скомпільовану за допомогою Visual Studio 2005 з останніми апдейтами. Проблема погіршується тим, що на машині, де проводиться збирання, все завантажується чудово. Пошук інформації в Internet'і нічого не дав. Спробували зібрати старий білд (забрали з CVS'у) - наче завантажується. Почали шукати відмінності і виключати їх по черзі. Дійшли до початкової версії - не збирається. Прогаяли ми з цим вдвох цілий день. Ввечері я з'ясував, що в мене на віртуальній машині таке теж відтворюється, і далі шукав проблему сам. Не знайшов. Подивився, що в мене MSVC Runtime - від 15.07.2009. Якого біса? Зніс, спробував зробити Repair інсталяції Visual Studio 2005. Не хоче робитсь, якась внутрішня помилка. Добре, що в мене лежить в сейфі бекап гарантовано робочої системи. Забрав звідти старі файли каталогу \VC . Перезібрав - все завантажується. Як я розумію, - це Microsoft випустила якесь чудове оновлення, таке що зібрані ним збірки вимагають невідомо чого (покладання нового runtime'у на тестовій машині не допомагало, тобто не його ці нові збірки вимагають). Причому самого оновлення я не знайшов в переліку оновлень (Control Panel -> Add / Remove Programs). Так що залишається таємницею, що то було... Тепер треба всі продукти перезбирати.
Якщо ви поставили Firefox 3.5 і ви користуєтесь плагіном TabMix Plus (він додає ряд надзвичайно важливих функцій, як то перелік закритих вкладок, відкриття закладок (favorites) в новій вкладці, захист вкладки від випадкового закриття тощо), то встигли помітити, що на домашній сторінці плагіну версія не підтримує Firefox 3.5. Це надзвичайно сумно. Насправді, ось тут є девелоперський білд для 3.5. Працює коректно.
Цього разу плагіни для розширення experience'у від використання Гугля.

Перший плагін дозволяє обмежувати пошук певними датами чи типами файлів без відкриття Advanced Search'у.

Другий плагін додає результати пошуку в Вікіпедії до результатів самого Гугля.

Третій плагін створює хмару тегів, що відносяться до результатів пошуку.

Повний опис тут .

Полный список здесь. Есть полезные вещи. У меня, например, дошли руки прикрутить IE View (позволяет открыть сайт с движком ослика, что мне нужно для посещения одного сайта). LinkChecker также выглядит многообещающе.

UPD: а IE View оказался бестолковым - он просто запускает IE для заданной ссылки (или по маске). надо искать альтернативу.

  • Архів

    «   Квітень 2024   »
    Пн Вт Ср Чт Пт Сб Нд
    1 2 3 4 5 6 7
    8 9 10 11 12 13 14
    15 16 17 18 19 20 21
    22 23 24 25 26 27 28
    29 30