Создание простой контактной формы с помощью Angularjs и php. Безопасность данных пользователя Php код для отправки электронной почты

Posted October 23rd at 11:15pm.

Использование подтверждения имени пользователя для повышения уровня безопасности учетной записи

В качестве дополнительной меры безопасности мы предлагаем вам систему подтверждения имени пользователя, призванную повысить безопасность учетной записи на некоторых страницах EA, включая вашу страницу учетной записи EA.

  • Вниманию игроков в FIFA: данная функция необходима для доступа к серверам FIFA Ultimate Team и партнерским приложениям.

Данная защитная мера призвана оградить вашу учетную запись EA от входа в нее с неизвестных устройств без пароля и подтверждения вашего имени пользователя. Уведомления будут приходить на мобильный телефон или электронную почту на ваш выбор. В процессе подтверждения имени пользователя создаются временные цифровые коды доступа для каждого конкретного пользователя, необходимые для входа в учетную запись с неизвестного устройства.


Включение подтверждения имени пользователя

1. Зайдите на ea.com и выполните вход.

2. Нажмите на ваше имя пользователя, затем выберите пункт «Моя учетная запись».

3. Выберите вкладку «Безопасность», где вы сможете найти раздел «Подтверждение имени пользователя».

4. Нажмите «Включить» для активации функции подтверждения имени пользователя, введите ответ на контрольный вопрос и выберите один из вариантов: электронная почта, приложение для идентификации или SMS для получения кода подтверждения.

  • Если вы выберете опцию «Электронная почта», а не SMS, удостоверьтесь, что указанный для учетной записи адрес электронной почты - это действительный и работающий адрес, который вы регулярно проверяете на наличие новых сообщений.
  • Приложение для идентификации для планшета и мобильного телефона позволяет генерировать на этих устройствах коды подтверждения для входа в учетную запись.
  • Выберите тип устройства из выпадающего списка и загрузите Google Authenticator для устройств на базе Apple и Android или Authenticator для устройств, использующих операционную систему Windows.
  • Игрокам в FIFA 15 на PlayStation 3 и Xbox 360 не понадобится предпринимать дополнительные меры безопасности при подтверждении имени пользователя с приложением для идентификации.

5. Теперь вы будете получать код подтверждения при попытке входа с неизвестного устройства. Каждые 90 дней вы будете получать код подтверждения при входе в учетную запись с доверенных устройств. Таким образом, только вы с помощью уникального кода сможете получить доступ к вашей учетной записи EA.


При необходимости подтверждение имени пользователя можно отключить, для этого вернитесь на страницу управления учетной записью и выберите пункт «Отключить».*

Примечание

  • *Не отключайте подтверждение имени пользователя, если вы играете в FIFA Ultimate Team, иначе вам будет отказано в доступе.
  • Убедитесь, что вы также создали и подтвердили секретный вопрос и ответ на него для игры FIFA Ultimate Team.

Настройте приложение для идентификации

Приложение для идентификации - это самый быстрый способ безопасной проверки вашей личности. Настройте приложение для идентификации на своем мобильном устройстве, чтобы входить с помощью сгенерированного им кода для двухступенчатой идентификации.

1. Откройте вкладку «Безопасность» на странице «Моя учетная запись» и найдите раздел «Подтверждение имени пользователя».

2. Нажмите «Включить», чтобы включить систему «Подтверждение имени пользователя», ответьте на контрольный вопрос, выберите «Приложение для идентификации» и нажмите «Продолжить».

3. Выберите в выпадающем списке нужную вам операционную систему телефона и просканируйте QR-код с помощью приложения для чтения штрихкодов или найдите в магазине приложений для вашего телефона по запросу authenticator соответствующее приложение: Google Authenticator на Android и iOS или Authenticator на Windows Phone.

4. Откройте приложение для идентификации и выберите пункт добавить учетную запись вручную.

5. Просканируйте QR-код или введите секретный код, чтобы связать приложение для идентификации с учетной записью EA.

6. Закончите настройку приложения для идентификации, указав сгенерированный им для учетной записи Electronic Arts код и нажав «Включить подтверждение имени пользователя».

Когда вам понадобится подтвердить имя пользователя в будущем:

1. Откройте приложение для идентификации.

2. Введите шестизначный код для учетной записи Electronic Arts.

Сгенерированный код действителен в течение ограниченного времени. Если время действия текущего кода уже истекает, подождите, пока приложение сгенерирует новый код, чтобы у вас было достаточно времени на его ввод.

Что делать, если у меня нет возможности воспользоваться мобильным телефоном или электронной почтой, когда мне нужен код? Можно ли сгенерировать вспомогательные коды?

Если ваш телефон, идентификатор или электронный ящик не доступны для вас, единственный способ войти в учетную запись EA с неизвестного компьютера - использование вспомогательных кодов. Убедитесь, что храните их в надежном и доступном для вас месте. Вы можете просматривать и обновлять данные коды в учетной записи EA в разделе «Настройки конфиденциальности» клиента Origin или в режиме онлайн.

  • Нажмите на пункт «Безопасность», затем «Просмотр» и «Вспомогательные коды».*
  • Вы также можете воспользоваться функцией «Запрос нового кода после входа в FIFA Ultimate Team».

*Если у вас закончились вспомогательные коды, вы можете сгенерировать новые на странице «Управление учетной записью».

Подтвердите контактную информацию, чтобы убедиться в верности кода.

Если у вас возникли трудности с кодом подтверждения имени пользователя, убедитесь, что ваш адрес электронной почты или номер телефона введены верно. При использовании идентификатора убедитесь в корректности установки программы.

  • Если при активации подтверждения имени пользователя вы выбрали опцию отправки кода на почту, то можете проверить и обновить свой адрес электронной почты в разделе «Обо мне» на странице «Управления учетной записью» или через клиент Origin.
  • Если вы выбрали «Приложение для идентификации», вы можете воспользоваться штрихкодом или QR-кодом для сканирования и поиска кода между?secret= и &.
  • Если при активации подтверждения имени пользователя вы выбрали опцию отправки кода по SMS , то можете проверить и обновить свой номер телефона в разделе «Безопасность» на странице управления учетной записью или через клиент Origin.
  • Создать или подтвердить секретный вопрос и ответ.

Как только вы подтвердите контактные данные, у вас появится возможность включить подтверждение имени пользователя для получения нового кода.

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

Общее правило безопасности - не доверять никому, так что нельзя надеяться на то, что пользователи всегда будут вводить в формы правильные значения. Например, вместо ввода в поле правильного email-адреса, пользователь может ввести неверный адрес, или вообще какие-нибудь вредоносные данные.

Когда дело доходит до валидации пользовательских данных, ее можно проводить как на стороне клиента (в веб-браузере), так и на серверной стороне.

Ранее валидацию на стороне клиента можно было провести только с помощью JavaScript. Но все изменилось (или почти изменилось), так как с помощью HTML5 валидацию можно проводить средствами браузера, без необходимости писать сложные скрипты для валидации на JavaScript.

Валидация форм с помощью HTML5

HTML5 предоставляет довольно надежный механизм, основанный на следующих атрибутах тега : type , pattern и require . Благодаря этим новым атрибутам вы можете переложить некоторые функции проверки данных на плечи браузера.

Давайте рассмотрим эти атрибуты, чтобы понять, как они могут помочь в валидации форм.

Атрибут type

Этот атрибут говорит, какое поле ввода отобразить для обработки данных, например, уже знакомое поле типа

Некоторые поля ввода уже предоставляют стандартные способы валидации, без необходимости писать дополнительный код. Например, проверяет поле на то, что введенное значение соответствует шаблону правильного email адреса. Если в поле введен неверный символ, форму нельзя будет отправить, пока значение не будет исправлено.

Попробуйте поиграться со значениями поля email в нижеприведенной демонстрации .

Также существуют другие стандартные типы полей, вроде , и для валидации чисел, URL’ов и телефонных номеров соотвествено.

Замечание: формат телефонного номера различается для разных стран из-за несоответствия количества цифр в телефонных номерах и разности форматов. Как результат, спецификация не определяет алгоритм проверки телефонных номеров, так что на время написания статьи данная возможность слабо поддерживается браузерами.

К счастью для нас, валидацию телефонных номеров можно провести с использованием атрибута pattern , который принимает как аргумент регулярное выражение, который мы рассмотрим далее.

Атрибут pattern

Атрибут pattern , скорее всего, заставит многих фронтенд-разработчиков прыгать от радости. Этот атрибут принимает регулярное выражение (аналогичное формату регулярных выражений JavaScript), по которому будет проверяться корректность введенных в поле данных.

Регулярные выражения это язык, использующийся для разбора и манипуляции текстом. Они часто используются для сложных операций поиска и замены, а также для проверки корректности введенных данных.

На сегодняшний день регулярные выражения включены в большинство популярных языков программирования, а также во многие скриптовые языки, редакторы, приложения, базы данных, и утилиты командной строки.

Регулярные выражения (RegEX) являются мощным, кратким и гибким инструментом для сопоставления строки текста, вроде отдельных символов, слов или шаблонов символов.

Передав регулярное выражение в качестве значения атрибута pattern можно указать, какие значения приемлемы для данного поля ввода, а также проинформировав пользователя об ошибках.

Давайте посмотрим на пару примеров использования регулярных выражений для валидации значения полей ввода.

Телефонные номера

Как упоминалось ранее, тип поля tel не полностью поддерживается браузерами из-за несоответствия форматов номеров телефонов в разных странах.

Например, в некоторых странах формат телефонных номеров представляется в виде xxxx-xxx-xxxx , и сам телефонный номер будет что-то вроде этого: 0803-555-8205 .

Регулярное выражение, которому соответствует данный шаблон, такое: ^\d{4}-\d{3}-\d{4}$ . В коде это можно записатьтак :

Буквенно-цифровые значения

Атрибут required

Это атрибут булевого типа, использующийся для указания того, что значение данного поле обязательно заполнить для того, чтобы отправить форму. При добавлении этого атрибута полю браузер потребует от пользователя заполнить данное поле перед отправкой формы.

Это избавляет нас от реализации проверки полей с помощью JavaScript, что может сохранить немного времени разработчикам.

Например: или (для совместимости с XHTML)

Во всех демках, которые вы видели выше, используют атрибут required , так что вы можете попробовать его в действии, попытавшись отослать форму без заполнения полей.

Заключение

Поддержка валидации форм браузерами довольно хороша , а для старых браузеров вы можете использовать полифиллы.

Стоит отметить, что надеяться на валидацию только на стороне браузера опасно, так как эти проверки могут быть легко обойдены злоумышленниками или ботами.

Не все браузеры поддерживают HTML5, и не все данные, посланные вашему скрипту, придут с вашей формы. Это значит, что перед тем, как окончательно принять данные от пользователя, необходимо проверить их корректность на стороне сервера.

Нам понадобятся следующие страницы:

  • Страница регистрации с формой для регистрации
  • Страница активации аккаунта
  • Страница восстановления пароля
  • Страница сброса пароля

Форма входа на сайт будет размещаться на всех страницах сайта (например, в хедере).

Вот такую страницу регистрации мы хотим получить:

Здесь тип учетной записи будет определять, в какую группу мы зарегистрируем пользователя. Так же полем для идентификации (username) будет электронная почта.

Добавим на страницу вызов сниппета Register :

[[!Register? &submitVar=`register-btn` &activationResourceId=`27` &activationEmailTpl=`Email.Activation` &activationEmailSubject=`Вы зарегистрированы на сайте example.com` &placeholderPrefix=`reg.` &successMsg=`

Спасибо за регистрацию. На вашу электронную почту [[!+reg.email]] отправлено письмо со ссылкой на активацию аккаунта. Пройдите по этой ссылке, чтобы завершить регистрацию.
` &usernameField=`email` &usergroupsField=`reg_type` &customValidators=`valueIn` &validate=`username:blank, reg_type:valueIn=^Readers;Writers;Idlers ^, fullname:required:minLength=^6^, password:required:minLength=^6^, password_confirm:password_confirm=^password^, email:required:email` ]] [[!+error.message:default=`[[!$Register.Form]]`]]

Обратите внимание, что все теги, касающиеся регистрации нужно обязательно вызывать некешированными. Такие же правила действуют при обработке форм сниппетом FormIt.

Разберем параметры вызова:

&submitVar=`register-btn` - указывает атрибут name тега input . То есть сниппет сработает, только если отправлена форма кнопкой с определенным именем.

&activationResourceId=`42` - забегая вперед, 42 – это идентификатор страницы, на которой мы будет активировать пользователя.

&activationEmailTpl=`Email.Activation` - чанк с письмом активации, о нем позже.

&placeholderPrefix=`reg.` - указывает, что все плейсхолдеры, за редким исключением (об этом дальше), которые создаются в данном сниппете, должны начинаться с «reg.».

&successMsg – сообщение, которое выведется при успешной отправке формы. Заметьте, что в нем можно указывать значения из формы и любые другие теги. Данное сообщение запишется в плейсхолдер [[!+error.message]]. Довольно странное название, да и в документации на данный момент ошибка. Там написано [[!+reg.error.message]], но из кода компонента следует, что это не так.

&usernameField=`email` - указывает, что в качестве имени пользователя будет использоваться поле email.

&usergroupsField=`reg_type` - определяет поле, устанавливающее группу, в которую будет добавлен новый пользователь.

&customValidators=`valueIn` - указывает дополнительные валидаторы, которые нужно создать вручную.

&validate – валидаторы задаются через запятую для каждого поля, а если требуется несколько валидаторов для одного поля, то они еще разделяются двоеточием. Разберем их отдельно:

username:blank – нехитрая ловушка для спама, означает, что поле username должно остаться пустое.

reg_type:valueIn=^Readers;Writers;Idlers^ - ограничиваем возможные группы тремя указанными. В изначальной поставке такого нет и злые хацкеры могут зарегиться, например, под группой Administrator (если вы ее не переименовали).

fullname:required:minLength=^6^ - поле fullname должно быть не пусто и содержать хотя бы 6 символов.

password:required:minLength=^6^ - аналогично для пароля.

password_confirm:password_confirm=^password^ - пароли должны совпадать.

email:required:email – электронная почта должна быть не пуста и являться собственно почтой.

Конструкция [[!+error.message:default=`[[!$Register.Form]]`]] выводит сообщение об успешной отправке формы или чанк формы, если вы только зашли на страницу или заполнили ее неправильно.

Создадим вышеупомянутый валидатор valueIn . Для этого создаем сниппет с названием valueIn и следующим кодом:

$valueIn = explode(";", $param); return in_array($value, $valueIn);

Теперь требуется создать чанк Register.Form . В данном случае он будет следующим (используется Bootstrap 3):

[[!+reg.error.fullname:notempty=`
[[!+reg.error.fullname]]
`]]
[[!+reg.error.email:notempty=`
[[!+reg.error.email]]
`]]
[[!+reg.error.password:notempty=`
[[!+reg.error.password]]
`]]
[[!+reg.error.password_confirm:notempty=`
[[!+reg.error.password_confirm]]
`]]

Все поля обязательны для заполнения

В этой форме замечу несколько вещей, касающихся MODX:


– форма обрабатывается на той же странице, на которой показывается.

Установка значения из полученных с формы для того, чтобы в случае провала пользователю не пришлось вводить все заново.

[[!+reg.error.email:notempty=`[[!+reg.error.email]]`]] – опять же в случае провала под полем отобразится сообщение об ошибке.

– обязательно указываем имя кнопки, если ранее устанавливали свойство &submitVar .


Теперь осталось создать чанк Email.Activation с письмом, которое сайт отправляет пользователю:

Спасибо за регистрацию! Чтобы активировать ваш аккаунт, пожалуйста, перейдите по следующей ссылке:

Активировать аккаунт на сайте Example.Com

После активации, вы сможете войти, указав электронную почту и пароль:

Логин: [[+email]]

Пароль: [[+password]]


Здесь можно использовать плейсхолдеры с именами полей формы. Заметьте, что они пишутся уже без «reg.». Так же добавляется плейсхолдер [[+confirmUrl]] , в котором уже сгенерирована ссылка для активации, даже ничего не нужно делать.


Последним штрихом в искусстве регистрации нового аккаунта с помощью компонента Login будет создание страницы активации. Используем для этой страницы пустой шаблон, а в контенте страницы нужно указать всего лишь вызов тега:

[[!ConfirmRegister? &redirectTo=`1`]]

где 1 – идентификатор страницы, на которую пользователь перейдет в случае успешной активации. При этом он уже будет залогиненным.


Приступим к настройке входа в профиль пользователя. Форма авторизации будет простая:

Добавим ее, вызвав в нужном месте:

[[!Login? &loginTpl=`Auth.Login` &logoutTpl=`Auth.Logout` &errTpl=`Auth.Login.Error` &actionKey=`action` &loginKey=`login` &redirectToPrior=`1` &logoutResourceId=`1`]]

Здесь мы указываем чанк с формой для входа, нарисованной выше (&loginTpl=`Auth.Login` ), чанк с кодом, показывающимся авторизованным пользователям (&logoutTpl=`Auth.Logout` ), небольшой чанк с выводом ошибки входа (&errTpl=`Auth.Login.Error` ). Далее следуют параметры:

&actionKey=`action` и &loginKey=`login` - основные идентификаторы для обработки запроса. Первый означает имя параметра в POST-запросе, а второй его значение. То есть форма должна передать значение $_POST["action"]="login", чтобы сниппет Login ее обработал.

&redirectToPrior=`1` - означает, что после входа мы переместимся на ту же страницу, с которой входили.

&logoutResourceId=`1` - при выходе из профиля мы перейдем на страницу с идентификатором 1.


Чанк Auth.Login :

[[!+errors]]

Форма обрабатывается на этой же странице. Если случилась ошибка, то она будет выведена ниже формы в плейсхолдере [[!+errors]]. Так же нужно не забыть ссылки на ресурсы с Регистрацией и восстановлением пароля. Заметьте, что в поле для электронной почты name=«username» – именно в это поле продублировал почту сниппет Register , и оно является для пользователей уникальным.


Чанк Auth.Logout:

[]` &tpl=`User.HeaderBadge` &innerJoin=`{"modUserGroupMember":{"alias":"modUserGroupMember","on":"modUser.id = modUserGroupMember.member"}, "modUserGroup":{"alias":"modUserGroup", "on":"modUserGroupMember.user_group = modUserGroup.id"}}` &select=`{"modUserGroup":{"group_name": "modUserGroup.name"}}` ]]

Выход из профиля

Эта часть не обязательна, если все пользователи в одной группе. Но, чтобы отобразить группу пользователя, стандартных возможностей сниппетов, входящих в компонент Login, недостаточно. Можно написать простенький сниппет для получения названия группы на xPDO , а можно воспользоваться уже готовым сниппетом pdoUsers , входящим в пакет pdoTools . Параметры, указанные в этом сниппете:

&users=`[[+modx.user.id]]` - выбираем только текущего авторизованного пользователя.

&tpl=`User.HeaderBadge` - чанк, в котором мы выведем краткую информацию о пользователе.

&innerJoin – JSON с джойнами таблиц групп пользователей, описание выходит за рамки статьи. Главное это работает J.

&select – JSON, добавляющий в выборку поле modUserGroup.name с алиасом group_name.


Чанк с бейджиком пользователя User.HeaderBadge :

Вы вошли как [[+group_name]] [[+fullname]] Личный кабинет

Если бы нам не нужна была группа пользователя, то содержимое этого чанка можно было бы вставить сразу в чанк Auth.Logout . Здесь можно выводить плейсхолдеры с любыми полями modUser и modUserProfile плюс c помощью pdoUsers добавилось поле group_name .


В чанке Auth.Login.Error простой вывод ошибки:

[[+msg]]

С логином мы закончили. На этом этапе пользователь может зарегистрироваться и успешно войти. Но что, если он забыл пароль? В этом случае он жмякает на ссылку «Забыли пароль?» и переходит на страницу восстановления пароля, которую мы предварительно создаем и помещаем туда вызов:

[[!ForgotPassword? &tpl=`Auth.ForgotPass.Form` &submitVar=`forgotpass` &errTpl=`Auth.Login.Error` &sentTpl=`Auth.ForgotPass.Sent` &emailTpl=`Email.ForgotPass` &emailSubject=`Восстановление доступа к аккаунту на сайте Example.Com` &resetResourceId=`29`]]

Разберем параметры этого вызова:

&tpl=`Auth.ForgotPass.Form` - чанк формы, в которой пользователь введет свой email.

&submitVar=`forgotpass` - в случае сниппета ForgotPassword достаточно, чтобы параметр с таким названием был передан на сервер и не важно с каким непустым значением.

&errTpl=`Auth.Login.Error ` - вывод ошибки аналогично сниппету Login

&sentTpl=`Auth.ForgotPass.Sent` - в этом чанке содержится контент, который будет выведен в случае успешной отправки письма на смену пароля.

&emailTpl=`Email.ForgotPass` - собственно письмо содержится здесь.

&emailSubject =`Восстановление доступа к аккаунту на сайте Example.Com` - заголовок письма.

&resetResourceId=`29` - идентификатор ресурса, на котором будет производиться сброс пароля на новый.


Чанк Auth.ForgotPass.Form:

[[+loginfp.errors]]

Нового здесь только другой способ вывода ошибок в плейсхолдере [[+loginfp.errors]] и передача параметра, что именно эта форма сбрасывает пароль: .

Auth.ForgotPass.Sent:

Информация по восстановлению аккаунта выслана на указанный электронный ящик: [[+email]].

Здесь можно использовать данные из формы выше.


Email.ForgotPass:

[[+fullname]],

Чтобы активировать свой новый пароль, пожалуйста, перейдите по следующей ссылке:

Хочу новый пароль

Если все прошло успешно, вы сможете войти в свой профиль с помощью следующих данных:

Логин: [[+username]]

Пароль: [[+password]]

Спасибо,
Администрация сайта Example.Com

Все очень похоже на чанк письма активации, только пароль здесь сгенерированный в сниппете.


Завершающим штрихом осталось создать ресурс, на который пользователь будет переходить из письма для обновления пароля. В этом ресурсе нам нужен вызов:

[[!ResetPassword:empty=`

Вы не заказывали сброс пароля. Возможно вы ошиблись адресом. Вы можете перейти на Главную страницу сайта или воспользоваться меню выше.

`? &tpl=`Auth.ForgotPass.Reset`]]

Этот код выведет сообщение, если вдруг кто-то забредет на данную страницу повторно или просто случайно. А если пароль успешно сброшен, выведется сообщение из чанка Auth.ForgotPass.Reset:

Ваш пароль успешно сброшен на указанный в письме. Теперь вы можете войти под этим паролем. Не забудьте сменить его в профиле.

Теперь мы имеем полностью рабочую систему авторизации и регистрации пользователей. Изменение профиля авторизованных пользователей оставим за рамками статьи.


1. Создаем страницу регистрации и добавляем на нее вызов сниппета Register .

2. Создаем чанки с формой регистрации Register.Form и письмом активации Email.Activation .

3. Создаем страницу подтверждения регистрации и размещаем на ней вызов сниппета ConfirmRegister .

4. Добавляем вызов сниппета Login туда, где хотим разместить форму входа и бейджик авторизованного пользователя.

5. Создаем чанк с формой входа Auth.Login , чанк с информацией об авторизованном пользователе Auth.Logout , чанк с сообщением об ошибке Auth.Login.Error .

6. Создаем страницу восстановления пароля и размещаем на ней вызов сниппета ForgotPassword .

7. Создаем чанк Auth.ForgotPass.Form с формой для восстановления пароля, чанк Auth.ForgotPass.Sent с сообщением об успешной отправке письма, чанк Email.ForgotPass с письмом на сброс пароля.

8. Создаем ресурс с окончательным сбросом пароля и размещаем в нем вызов сниппета ResetPassword .

9. Создаем чанк Auth.ForgotPass.Reset с сообщением об успешном сбросе пароля.

На этом все. Буду рад любым дополнениям и замечаниям.

Почему мне установили эту форму

В настоящий момент на ваш сайт проводится Brute-force атака. Brute-force атака — это атака по подбору паролей. В данном случае происходит подбор пароля к административной панели вашего сайта.

Чтобы не допустить взлома вашего сайта и повысить его безопасность, нами была установлена дополнительная защита.

Как я теперь могу получить доступ к админ-панели сайта

Теперь при доступе к административной панели вашего сайта (на Joomla или WordPress) будет появляться дополнительное окно ввода логина и пароля с надписью «please use your control panel password». В качестве логина необходимо ввести логин вашей услуги хостинга, он имеет вид «u1234567» . В качестве пароля — текущий пароль к вашей услуге хостинга.

После прохождения базовой HTTP-аутентификации перед вами откроется стандартное поле для авторизация в админ-панели вашего сайта. Теперь уже вам нужно будет ввести логин и пароль администратора сайта.

Как работает базовая HTTP-аутентификация

При вводе логина-пароля в окно базовой аутентификации значение логина и хеша пароля будут сравниваться со значениями в специальном файле ~/etc/users , доступным в панели управления хостингом. Содержимое файла выглядит примерно так: «u1234567:dm48bspxIO3rg» . Где «u1234567» — логин, а «dm48bspxIO3rg» — хеш пароля (обратите внимание: только хеш, а не сам пароль!). Хеш пароля — это результат преобразование пароля по определенному алгоритму.

Таким образом, когда вы вводите логин и пароль в окно базовой аутентификации, от введённого пароля берётся хеш и сравнивается со значением хеша в файле ~/etc/users . Если значения совпадают, вы проходите аутентификацию.

У меня не получается пройти базовую аутентификацию

Вероятно, вы вводите неверный пароль. Установите новый пароль для базовой аутентификации:

Если вы прошли базовую аутентификацию но не можете войти непосредственно в админ-панель сайта Joomla или WordPress, воспользуйтесь справкой:

Как повысить защиту сайта от Brute-force атак?

Для повышения защиты сайта:

  • измените логин суперпользователя на более уникальный. Не используйте короткие имена, лучше если вы будете использовать имя вместе с фамилией. В сети Интернет есть множество ресурсов где собраны наиболее популярные логины. Ознакомьтесь с ними и никогда не используйте их;
  • установите сложный пароль администратора сайта. Сложный пароль должен содержать буквы верхнего и нижнего регистра, цифры и дополнительные символы, такие как «* — _ # :» и т.д. Длина пароля — никак не меньше 6 символов. Желательно от 10 и выше.

Как убрать форму базовой HTTP-аутентификации?

Чтобы убрать форму базовой HTTP-аутентификации:

AuthType Basic AuthName "please use your control panel password" AuthUserFile .../users Require valid-user

Для комментирования строки поставьте символ решётки («#») в начало строки, вот так.