Как сделать пароль в html

Обновлено: 07.07.2024

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

Итак, наша задача - установить пароль на доступ к некоторой странице. Начнем с самого примитивного способа, если можно так сказать, защиты - нескольких строчек на JavaScript'е. Код - что-то вроде

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

Уровнем повыше расположена аналогичная система, реализованная на Java.

Ниже приведен упрощенный исходный код.

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

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

Последнего недостатка лишено решение, основанное на использовании CGI. Простенький скрипт на Perl'е выглядит примерно так:

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

Наконец, наиболее надежный способ установки пароля на доступ - это воспользоваться средствами сервера - не зря ж их люди делали, в конце концов. Остановлюсь на двух - Апаче как самом популярном и IIS как тоже популярном :)

С IIS все совсем просто - защита осуществляется средствами NTFS, что, конечно, несколько ограничивает возможности не-администраторов сервера. Идея следующая: у пользователя IUSR_xxxx, под аккаунтом которого по умолчанию работают все посетители узла, отбирается доступ к желаемому файлу/каталогу. После чего доступ к этим файлам будут иметь только те пользователи, для которых это явно указано в Properties->Security. Понятно, что их гораздо удобнее объединять в группы. Здесь есть пара тонкостей. Во-первых, указанным пользователям должно быть дано право Logon locally (Policies->User Rights в User Manager'е). Во-вторых, если не выбрать в настройках WWW service Basic authentication (Clear Text), внутрь будут пропущены только пользователи Internet Explorer'а.

В Apache все делается несколько иначе. Защита ставится на уровне каталогов. Соответствующие директивы могут быть помещены как в в общий конфигурационный файл (в разделе ), так и в файлы .htaccess. Набор директив в обоих случаях одинаков, а для большинства людей, арендующих место под сайт/страницу на чужом сервере, гораздо актуальнее второй способ. Итак, вы создаете в каталоге, доступ к которому планируется ограничить, файл .htaccess, после чего вставляете в него следующие директивы (привожу основные):

AuthType тип контроля - обычно используется Basic.

AuthName имя - задает имя области, в которой действительны имена и пароли пользователей. Это то самое имя, которое броузер показывает в диалоге ввода пароля. Задав одно такое имя для разных каталогов, можете сэкономить пользователям время по вводу лишнего пароля.

AuthGroupFile имя - задает имя файла, в котором хранятся имена групп и их членов. Его формат:

AuthUserFile имя - задает имя файла с паролями. По большому счету для его формирования надо воспользоваться утилитой htpasswd из поставки Apache. Но по крайней мере для некоторых версий сервера этот формат такой:

Passwordhash вполне можно получить стандартной функцией Perl'а:

где $pass - пароль, $salt - строка из двух символов, участвующая в формировании хэша.

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

require user user1 user2 и require group user1 user2 позволяют указать, какие пользователи и группы получат доступ к данному каталогу.

require valid-user разрешает доступ всем пользователям, указанным в файле паролей системы.

Еще пара полезных директив - deny и allow - соответственно запрещения и разрешения доступа. Применяются примерно так:

По умолчанию сначала выполняются все deny, потом все allow, так что allow from all разрешит доступ всем пользователям, невзирая ни на какие deny. Порядок можно изменить директивой order: order allow, deny.

deny from all отлично сочетается со вторым способом защиты страниц через CGI, именно этой директивой лучше всего прикрывать всякие пароли к гостевым книгам и т.д. При попытке обращения к страницам из этого каталога пользователь получит нечто такое.

Кстати, тут между делом демонстрируется самостоятельная обработка ошибок: в данном случае - код 403, Forbidden. Аналогично обрабатывается и всеми любимая 404, Not Found, и 401, Unauthorized. Для этого достаточно добавить в .htaccess директиву ErrorDocument код url:

Для заключительного примера используем файл .htaccess со следующим содержимым:

В файле tgroup всего одна строчка - test: login test, в файле tuser - зашифрованные пароли для login (password) и test (test). Результат можете оценить здесь. Обратите внимание, при повторном обращении к этой странице броузер понимает, что только что обращался к этой области, и не утруждает пользователя лишним запросом пароля.

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

Допустим, есть html-страница, на которой одно единственное поле для ввода пароля. При успешном вводе пароля человека перекидывает на нужную страницу.

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

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

Хранить пароль в коде страницы - моветон и грубое нарушение правил безопасности. Для хранения пароля используйте какую-нибудь хеш-функцию, например md5

@Johny, сколько бы раз вы там не хешировали-перехешировали ключевую строку, толку от этого больше не станет. Так или иначе эта строка будет частью того же AJAX запроса, который для сервера будет верным, а, следовательно, злоумышленник( или школьник ) сумеет его вытащить без всяких проблем.

Чтобы включить отображение пароля в поле password нужно заменить атрибут type="password" на type="text" , сделать это можно на jQuery или чистом JS.

Показать пароль по чекбоксу

Результат:

Показать пароль по ссылке

Результат:

Показать пароль по иконке

Результат:

Без jQuery

Результат:

Комментарии

Другие публикации

Сгенерировать пароль на JS

Contenteditable – текстовый редактор

Если добавить атрибут contenteditable к элементу, его содержимое становится доступно для редактирования пользователю, а.

Select option с ссылками

По спецификации HTML в option нельзя вставить ссылку, если все-таки её туда вставить, то работать она не будет. В таких случаях можно сделать перенаправление браузера по клику на JS или имитацию.


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

Сразу предупреждаю: через этот скрипт JS для защиты паролем нельзя прятать что-то ценное. Особо умный посетитель всегда может узнать пароль через исходный код страницы, например, набрав в браузере CTRL+U и найдя скрипт, как и всё содержимое страницы.

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

То есть, мы как бы показываем: вот искомое, оно совсем рядом, но тут же через секунду “Однако, пароль ввести всё же придётся!”.

Области применения

Где может пригодиться такая защита контента:

  • Для авторов e-mail рассылок и инфобизнесменов. Подпишись на рассылку, получи пароль и тогда ларёчек откроется.
  • Для запоминания имени, фамилии автора блога или адреса блога. В качестве пароля просто используется ключ, который и должен запомнить надолго посетитель. А за это тоже какой-то бонус.
  • С небольшими доработками можно тоже выдавать желаемое после лайка, доната, комментария и т.д. Вариантов масса, кто на что горазд.

Пример работы по кнопке ниже (откроется в новом окне). Пароль: 123456

Где работает защита

Работать будет почти везде: от простой HTML-странички до системы управления контентом типа WordPress или Joomla. Да, я знаю, в них и так можно поставить пароль. Например, в WordPress это делается вот так:

Как защитить страницу паролем через скрипт JavaScript

Но эта защита работает несколько иначе, хоть и на уровне сервера, и на много надёжнее, но нет этой “заманухи”, вроде “посмотри ещё секунды и мы снова скроем от глаз твоих”.

Ну и CMS разных полно, не все настолько же мощны, как WordPress. Наконец, простые сайты на HTML, простеньком PHP и лендинг пейдж никто не отменял!

Как установить и настроить

В любое место страницы вставляем такой код:

В целом всё понятно по коду: можно изменить текст окна, пароль (в коде он 123456 ), ответы при правильном вводе и не правильном вводе пароля. Последняя ссылка – это адрес, на который будет перенаправлен посетитель, если он введёт не верный пароль.

Важно: обязательно все кавычки одинарные должны остаться, иначе скрипт работать не будет!

При вводе в окнах редактирования разных CMS и программ, нужно для вставки переходить в режим “Текст” или “HTML”, “Код” и т.д. В WordPress вставлять нужно только в этой вкладке:

Как защитить страницу паролем через скрипт JavaScript

Иначе редактор автоматически заменит некоторые символы на специальные, чего допустить нельзя!

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

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

Прежде чем мы начнем, сначала нужно иметь несколько вещей. Некоторые из требований заключаются в следующем: HTML, CSS, Основные знания JavaScript (ES6), DOM.

Основное понимание вышеперечисленных навыков достаточно для того, чтобы вы могли следовать и понимать код в уроке. Для контекста это образец того, что мы будем строить. В конце этого урока мы будем иметь что-то вроде этого:


JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

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

Настройка нашей среды

Откройте редактор кода. Я использую Visual Studio Code. Вы можете использовать то, с чем вам больше всего нравится.

Внутри редактора создайте каталог с именем password-toggle (используйте любое имя, которое хотите, это просто для описательных целей)

Читайте также: