Подмена ссылки для логина /user.

Главные вкладки

Аватар пользователя greg007007007@drupal.org greg007007007@d... 14 января 2010 в 15:31

Вот, суть:
Недавно начал на друпале кодить, практически сразу встал вопрос как "спрятать" (при необходимости) ссылку на страницу аутентификации. В сети я не нашел готового решения(возможно такое уже и писали).
Есть мое решение, может кому пригодиться:

1. Включаем модуль path (позволяет создавать псевдонимы для адресов страниц (и н только) друпал)
2. Заходим в URL Aliases и создаем новый псевдоним (.../admin/build/path):
В графе существующий адрес (Existing system path) пишем user
В графе псевдоним (Path alias) пишем на свой вкус, нечто вроде supersecretlink1129827236
3. Открываем в корневой директории друпал файл .htaccess, находим строку RewriteEngine on
и буквально сразу после нее с новой строки пишем следующее:

RewriteCond %{REQUEST_URI} /user(/?)$
RewriteRule ^(.*)$ $1 [L,F]

в 1-й строке мы задаем условие (для URI: www.washdomen.ru/user, www.washdomen.ru/user/ ),
во 2-й строке правило L - условие последнее, F - Forbidden, запрет доступа (выдает средствами сервера статус 403).
--
Вот Вам и специалисты. Критики-море, куча обид, да вот только ошибку никто из говорливых не поправил за 2 дня. Чтож, промолчу, и без слов ВСЁ ясно.
Исправляю:

RewriteCond %{REQUEST_URI} (/user(/?)|user/login(/?))$
RewriteRule ^(.*)$ $1 [L,F]

Комментарии

Аватар пользователя greg007007007@drupal.org greg007007007@d... 14 января 2010 в 15:48

Чтобы повысить безопасность, в некотором смысле, поскольку ссылка с произвольным набором символов в данном случае выступает в качестве дополнительного "пароля". По эффективности эта мера практически не уступает решению с тем же .htaccess, require valid-user...
Учитывая простоту данного решения оно должно быть весьма эффективным (в плане усиления безопасности).
Т. е. если раньше аутентификация состояла из пары login+password, то теперь это уже тройка secreturl+login+password.
Если Вы знакомы с сочетаниями в теории вероятностей, то должны понять существенно снизившуюся вероятность "угадывания" в этом случае данных для аутентификации.

Аватар пользователя Greg007007007 Greg007007007 15 января 2010 в 19:58

"Ветер" wrote:
Тогда уж правильней поставить 404, а не 403. Так как 403 будет косвенно указывать что тут что-то есть :)

Ну тогда уже не просто 404 (403 - прописывается прямо в правиле RewriteRule и выдает 403 средствами сервера, а не друпала - до друпала на самом деле запрос не доходит вовсе) а скажем, есть у Вас пользовательская страница ошибки 404 в друпале по адресу /404. Тогда делаем, к примеру, вот как:

RewriteRule ^(.*)user(.*)$ $1404 [R=301]

или, понятней, если адрес Вашей пользовательской страницы ошибки 404 /pagenotfound

RewriteRule ^(.*)user(.*)$ $1pagenotfound [R=301]

--

"RxB" wrote:
Ну вот, на нашем форуме стало на одного параноика больше...

Спасибо Вам, и таким как Вы - БОЛЬШОЕ! Я вполне серьезен, благодаря Вам я точно не останусь без работы.
Извиняюсь за нескромный вопрос, Вы случаем логин:пароль admin:admin не считаете достаточной мерой безопасности? Lol

Нет, Вы не подумайте, я не язвлю, а лишь пытаюсь ВЕРНО классифицировать собеседника, если можно так выразиться (с Вашего позволения, разумеется)...

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 15 января 2010 в 20:10

"Greg007007007" wrote:
не считаете достаточной мерой безопасности?

Нет, не считаю, ставлю нормальной длины и сложности.
Но считаю, что прятать ссылку логина это черезчур, так как:
1. Брут по http дело не быстрое
2. Брут по http дело такое которое тяжело не заметить
3. Если кому-то надо вас сломать, то вас сломают и без логина
И вообще по поводу прятанья ссылки логина и других якобы "супер-антихак средств", Dan, не так давно, в аналогичном топике рассказал своё мнение, я его мнение полностью разделяю.

Я рад, что благодаря мне вы не останетесь без работы, но всё же, даже если переопределять путь логина, то делать это стоит своим модулем, так как ваш способ затрагивает .htaccess, который может быть изменён во время обновления системы, а во-вторых требует модуль path, который не у всех может стоять. Недрупальский у вас метод решения задачи. Так что, товарищ, лучше работать над собой, нежели хвалится что благодаря таким я, вы останетесь без работы

Аватар пользователя Greg007007007 Greg007007007 15 января 2010 в 20:48

Мало того что модуль path популярен и весьма полезен, он еще является частью ядра друпал, начиная с версии 4.3, вот текст о модуле Path с drupal.org: «...As of Drupal 4.3, this module has been integrated into the core.»

3-й пункт, Уважаемый RxB, право, не стоило так... Любой дверной замок вскрывается медвежатником за, примерно 30 минут, но Вы ведь не станете так огорчаться по этому поводу и не перестанете запирать дверь?
В вопросах безопасности не лишним быть знакомым с дисциплиной ТОКБ (Теоретические основы компьютерной безопасности), поверьте, это философия, "разработанная" специально для IT-шников.

По поводу .htaccess, не скрою, видимо есть здравое зерно...как минимум - нужно иметь в виду.
Но запрет, реализуемый через .htaccess на порядок надежней средства, реализуемого модулем друпала. Сравните цепочку, по которой "проходит" запрос в обоих случаях (условно, конечно - только чтобы уловить суть):
(.htaccess) Запрос -> Apache -> Запрет
(drupal module) Запрос -> Apache -> PHP -> Drupal -> Запрет
--

Уважаемые читатели! ПОМНИТЕ! Большинство взломов происходит по причине НЕДОСТАТОЧНЫХ мер безопасности! НО(!), здравый смысл никто не отменял. Если Вы действительно понимаете что делаете (как специалист), не слушайте других, делайте так, как считаете нужным в конкретной ситуации! (А ОПЫТ Ваших коллег - всегда имейте в виду).

Аватар пользователя Greg007007007 Greg007007007 15 января 2010 в 22:07

"RxB" wrote:
Эм... И в чём порядок надёжности? Вы знакомы с hook_menu_alter() к примеру?

Да, конечно знаком, речь о том, что кол-во элементов задействуется меньшее, поймите, даже PHP в этом случае не задействуется. Повторюсь, до hook_menu_alter() программный путь ДЛИННЕЕ и соответственно вероятность ошибки (потенциальная) - ВЫШЕ.
Оценка безопасности всегда измеряется вероятностными характеристиками.

В конце концов я ТОЛЬКО пердложил тем, кому это будет нужно решение. При этом никого не критиковал и не претендовал на звание "решение года", "панацея"...
Напишите СВОЙ модуль, поручитесь за него и выложите для загрузки Ваш труд для сообщества.
Есть золотое правило: критикуя - предлагай.

Мы с Вами по-разному смотрим на одни и те же вещи. Никому не в обиду, но я 6 лет учился в университете и получил диплом гос. образца по специальности 075200 "Компьютерная безопасность". Я - применяю полученные знания на практике, по крайней мере стараюсь это делать.

И пусть меня лучше осудят за излишнее стремление защитить систему от взлома, чем посмеются над неприятными мерами.

Аватар пользователя Dan Dan 15 января 2010 в 22:03

"Greg007007007" wrote:
Да, конечно знаком, речь о том, что кол-во элементов задействуется меньшее, поймите, даже PHP в этом случае не задействуется. Повторюсь, до hook_menu_alter() программный путь ДЛИННЕЕ и соответственно вероятность ошибки (потенциальная) - ВЫШЕ.

Я не понял, вы оптимизируете главную страницу? Если у вас такой сумашедший путь, то его набирать будут единицы пользователей - какой смысл в измерении длины и о какой ошибке речь?

"Greg007007007" wrote:
Оценка безопасности всегда измеряется вероятностными характеристиками.

Вы теории где-то начитались? Почитайте практику. На моём опыте друпал ещё ни разу не был сломан (если не считать случаев "усиления" безопасности вроде вашего, при котором были допущены фатальные ошибки), а вот через окружение - множество раз.

"Greg007007007" wrote:
НО(!), здравый смысл никто не отменял.

Именно. Только Ваше решение явно не от здравого смысла, а от банальной параннои. Что _ещё_ Вы сделали, чтобы обезапасить себя от атак?

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 15 января 2010 в 22:16

"Greg007007007" wrote:
но я 6 лет учился в университете и получил диплом гос. образца по специальности 075200 "Компьютерная безопасность". Я - применяю полученные знания на практике, по крайней мере стараюсь это делать.

А я учился на очном отделении, на год меньше, мне, наверно, не стоит хвалится? Диплом в наше время не более чем бумажка. И имею опыт работы достаточный, вас быстрее сломают с тылов, через FTP, SSH, украдут пароли сохранённые в клиенте. Чем будут брутить по http

Аватар пользователя Greg007007007 Greg007007007 15 января 2010 в 22:42

Всем спасибо за критику, но я не склонен к битию себя в грудь и рассказах о покоренных вершинах.
Если ЭТО никому не интересно и кажется параноидальным - пожалуйста, считайте что я преклонился перед Вашим опытом, я не обеднею от этого! Smile

Возможно я не в том месте разместил своё скромное мнение (опять-таки IMHO, конечно - извините за каламбур).

Модераторы, если Вам угодно - удалите ради бога этот пост, пока меня не обвинили в чем-нибудь криминальном! И если, не дай бог, я оскорбил кого-то заявлением о своем образовании...Уважаемые "самоучки" - я знаю по меньшей мере десяток "самоучек" (на мой взгляд это название грубовато, но я не располагаю другим столь же кратким и исчерпывающим названием) которые дадут фору уважаемым профессорам-практикам.

"Dan" wrote:
Вы теории где-то начитались? Почитайте практику. На моём опыте друпал ещё ни разу не был сломан (если не считать случаев "усиления" безопасности вроде вашего, при котором были допущены фатальные ошибки), а вот через окружение - множество раз.

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

Я безмерно счастлив что у многих из уважаемых кодеров есть "бумажки" об образовании, это важно для Моей страны, это в целом повышает уровень образованности нации. Жаль только что субъективное мнение зачастую главенствует над объективным.

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

Прошу меня извинить, но я вынужден прекратить комментировать этот пост, ну конечно за исключением случая появления здесь интересного (для меня) каммента. Wink

Аватар пользователя Dan Dan 16 января 2010 в 20:40

"<a href="mailto:greg007007007@drupal.org">greg007007007@drupal.org</a>" wrote:
Вот Вам и специалисты. Критики-море, куча обид, да вот только ошибку никто из говорливых не поправил за 2 дня. Чтож, промолчу, и без слов ВСЁ ясно.

Да-да-да. Мы никуда не годимся Smile

PS: ещё user/register есть. Да и запрещать надо /user* если уж на то пошло. Скоро будет стабильная версия high security drupal? )))

Аватар пользователя Dalay Dalay 10 марта 2010 в 1:39

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

PS Всегда считал лучшей защитой от взлома ежедневный бэкап.

Аватар пользователя FORTIS FORTIS 10 марта 2010 в 9:22

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

я бы спрятал ссылку не на логин, а на сайт ^^)

Аватар пользователя cryna cryna 8 апреля 2010 в 2:27

"RxB" wrote:
Молодец, что спрятали, можете теперь спать спокойно, забить на обновление модулей и движка и поставить пароль 123

Обновляет и модули и движок. И почему Вы решили, что не будет обновлять? Какая связь?
А отсечь лишнюю попытку посмотреть админку я думаю стоит.

Аватар пользователя Sinkora Sinkora 8 апреля 2010 в 4:27

http://www.whitehouse.gov/user - здесь, как видим, доступ для авторизации закрыт.
А, по-моему, статья неплохая. И весело было почитать комменты Smile

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

Но, ежедневно боты пытаются или авторизоваться на сайте на /user, /user/login, или зарегистрироваться на user/register. И чем плохо, если мы для них скроем эти алиасы?

Аватар пользователя Dan Dan 8 апреля 2010 в 14:03

"Sinkora" wrote:
И чем плохо, если мы для них скроем эти алиасы?

Вопрос не в том, скрывать или нет, а в том, как это делать. Человек удалил гланды через уши, вместо использования стандартных механизмов, типа hook_menu_alter и custom_url_rewrite_inbound/outbound.

"<a href="mailto:greg007007007@drupal.org">greg007007007@drupal.org</a>" wrote:
Исправляю:
RewriteCond %{REQUEST_URI} (/user(/?)|user/login(/?))$
RewriteRule ^(.*)$ $1 [L,F]

Так и не исправлено с учётом что есть ещё user/register.

"<a href="mailto:greg007007007@drupal.org">greg007007007@drupal.org</a>" wrote:
Скоро, скоро, здравомыслящие вы мои... Когда выйдет первая бета - позову вас всех в тестеры, потешусь.

Ну когда же?