В данной статье я дам пример внедрения Captcha-проверки на Outlook Web Access 2003 с помощью изменения файла аутентификации с помощью форм logon.asp.
Слово “Captcha” означает Completely Automated Public Turing test to tell Computers and Humans Apart (Полностью автоматизированный тест Тьюринга для разделения человека и компьютера) (см. ссылки в конце статьи). Большинство пользователей Интернета встречают такой тест в форме слова на рисунке (обычно искаженного), которое пользователь должен ввести в соответствующее поле для доказательства того, что он настоящий человек, а не робот для спама или иная программа для поиска уязвимостей в сети. На Рисунке 1 изображен пример. Надеюсь, что вы смогли распознать на рисунке слово “summer”.
Рисунок 1: Типичный рисунок Captcha-теста
Аутентификация с помощью форм для Exchange 2003 Outlook Web Access обычно сокращенно называемая FBA (Forms-based Authentication) достаточно защищена (в любом случае, роботу нужны верные учетные данные, чтобы пройти ее), но некоторые интересуются, можно ли добавить в этот механизм возможность Captcha-теста. В данной статье я расскажу, как это сделать с помощью изменения файла аутентификации с помощью форм logon.asp. Существует несколько решений для Captcha, но я выбрал свободно доступный сценарий, написанный Джонатаном Фистером, который можно скачать здесь. Данный сценарий имеет преимуществом то, что он не требует второй страницы для получения введенных в форму данных (что невозможно в OWA 2003): все процедуры выполняются на стороне клиента до того, как страница будет отправлена на сервер.
Следует заметить, что данный пример разработан для сервера Exchange 2003 с пакетом обновлений Service Pack 2. Будущие пакеты обновлений могут повлиять на содержимое файла logon.asp, но базовые принципы останутся теми же.
Процедура
Вначале установим скачанные и разархивированные файлы в подходящее место на сервере. Используется два .js-файла и папке с именем cimg с рисунками, которые будут показаны пользователю. Поместите эти файлы в папку C:\Program Files\Exchsrvr\exchweb (Рисунок 2):
Рисунок 2: Скачанные файлы в папке exchweb
Далее, найдите в Проводнике файл logon.asp, который ваш сервер отсылает браузеру при регистрации в OWA с помощью FBA. Найдите папку C:\Program Files\Exchsrvr\exchweb\bin\auth\. В ней и хранится файл(ы) logon.asp, используемый(ые) пользователями OWA. Выберите папку с именем, соответствующим языку, который используется клиентами OWA. Например, для англо-говорящих пользователей используется файл logon.asp, содержащийся в папке C:\Program Files\Exchsrvr\exchweb\bin\auth\usa\. Если вы используете несколько языков, вам придется изменить все соответствующие файлы.
Прежде, чем что-либо делать, сохраните копию файла logon.asp. Щелкните по файлу правой кнопкой и выберите Copy (Копировать), затем щелкните правой кнопкой в любом месте папки и выберите Paste (Вставить). Создастся копия файла logon.asp с именем ‘Copy of logon.asp’. Не выполняйте никаких действий до того, как вы сделайте эту копию. Если изменения файла будут неверными, регистрация с помощью форм будет невозможна. Далее, откройте файл logon.asp в Блокноте. Нажмите CTRL-F или F3 для начала поиска и выполните поиск текста </HEAD>. Он должен находиться примерно в трех четвертях от начала файла. Прямо перед тегом </HEAD> вставьте следующий текст (обратите внимание, что JavaScript учитывает регистр клавиатуры):
<script type="text/javascript" language="javascript" src="/exchweb/md5.js"></script>
<script type="text/javascript" language="javascript" src="/exchweb/jcap.js"></script>
<script type="text/javascript" language="javascript">
function doJcap()
{
if (jcap() == true)
{ document.forms[0].action = "/exchweb/bin/auth/owaauth.dll"; return true; }
else
{ return false; }
}
</script>
В моей версии OWA (и помните, что это может измениться в следующих пакетах обновлений) это выглядит так (Рисунок 3):
Рисунок 3: Изменение файла logon.asp
Далее, нажмите CTRL-F и выполните поиск строки <FORM (обратите внимание, что закрытой скобки нет). Между словом FORM и action вставьте следующий текст:
onsubmit="return doJcap();"
Затем удалите определение действия в теге <FORM> путем удаления строки action=»/exchweb/bin/auth/owaauth.dll» (будет восстановлено после успешного ввода слова на рисунке). Несколькими строками ниже вы увидите еще один тег <FORM> . Измените строки с параметрами onsubmit и action. Эта часть файла должна выглядеть примерно так (Рисунок 4):
Рисунок 4: Изменение тегов FORM
Сразу после второго тега <FORM> вы видите такую строку:
<% End If %>
Сразу после нее вставьте следующий текст:
<center>
<script language="javascript" type="text/javascript">cimg()</script><br>
<noscript>[This resource requires a Javascript enabled browser.]</noscript>
<font color="white" size="2"><b>Enter the code as it is shown above:</b><br>
<input type="text" name="uword" id="uword">
</center>
(См. Рисунок 5). Это поместит рисунок в верхней части страницы, а сразу под ним будет находиться поле для ввода. Если вы знакомы с HTML, вы можете поэкспериментировать для того, чтобы добиться более интересного расположения.
Рисунок 5: Изменения в файле logon.asp
Вот и все, что касается файла logon.asp. Можете сохранить его и закрыть Блокнот. Теперь необходимо сделать небольшое изменение в файле jcap.js, который был сохранен в папке C:\Program Files\Exchsrvr\exchweb. Щелкните правой кнопкой по файлу jcap.js и выберите Edit (Редактировать). Откроется Блокнот. В строке, начинающейся var imgdir, следует изменить путь к папке внутри папки exchweb. Измените ее таким образом:
var imgdir = "/exchweb/cimg/";
Вся строка должна выглядеть так (Рисунок 6):
Рисунок 6: Определение пути к файлам рисунков
Сохраните файл. Все готово. В следующий раз при открытии страницы регистрации FBA, она будет выглядеть примерно так, как на Рисунке 7. Здесь также показано сообщение предупреждения при несоответствии введенного текста тексту на рисунке.
Рисунок 7: Измененная страница регистрации FBA
Учтите, что версии файла logon.asp могут отличаться от того, что показано в статье, но основные принципы остаются одинаковыми. Ссылки на внешние сценарии располагаются между тегами <HEAD> и </HEAD>; изменения требуют два тега <FORM> (один для версии Premium и один для версии Basic клиента OWA); рисунок и поле ввода могут находиться в любом месте между открывающими (<FORM>) и закрывающим (</FORM>) тегами.
Источник http://www.msexchange.org