Изменение всплывающего окна, похожего на оповещение, в функции authenticate() ESPAsyncWebServer.

Итак, библиотека ESPAsyncWebServer по умолчанию использует аутентификацию Digest MD5, и я хочу использовать эту функцию в мой веб-сервер, но есть проблема: мне не нравится уродливое окно подсказки, и я не хочу писать форму для аутентификации, потому что он отправляет пароль в открытом виде. Я просмотрел все файлы в папке Src библиотеки ESPAsyncWebServer, но мне не удалось достичь моих начальных знаний в области программирования. Итак, как я могу это сделать? это что-то полностью на стороне браузера, и я не могу это изменить?

Обновление. Мне удалось получить от Wireshark следующую информацию.

Hypertext Transfer Protocol
    GET /openthefdoor HTTP/1.1\r\n
        [Expert Info (Chat/Sequence): GET /openthefdoor HTTP/1.1\r\n]
            [GET /openthefdoor HTTP/1.1\r\n]
            [Severity level: Chat]
            [Group: Sequence]
        Request Method: GET
        Request URI: /openthefdoor
        Request Version: HTTP/1.1
    Host: 192.168.1.3\r\n
    Connection: keep-alive\r\n
    Cache-Control: max-age=0\r\n
     [truncated]Authorization: Digest username="admin", realm="asyncesp", nonce="d13ba3040a4ed5c661a47d28c08554f4", uri="/openthefdoor", response="ca8806aa058dda66838784e784e67f8b", opaque="90ba2cd8a2870065f4daa582fd57105a", qop=auth, nc=0000
         username="admin"
         realm="asyncesp"
         nonce="d13ba3040a4ed5c661a47d28c08554f4"
         uri="/openthefdoor"
         response="ca8806aa058dda66838784e784e67f8b"
         opaque="90ba2cd8a2870065f4daa582fd57105a"
         qop=auth
         nc=00000002
 

2-е обновление: на основе этого вопроса Я думаю, всплывающее окно появляется из браузера, и я искал не в том месте!

, 👍0

Обсуждение

обыскал все файлы в папке Src ... что вы искали?, @jsotola

Если вы пишете красивую веб-страницу для входа в систему, почему вы не можете выполнить вход точно так же, с помощью веб-запроса из браузера через JavaScript? Почему это будет менее зашифровано, чем делать это напрямую?, @chrisl

@chrisl Могу ли я реализовать аутентификацию Digest MD5? также мне не хватает памяти на моем esp8266., @M A K

@jsotola для `authenticate()`,requestDigestAuthentication()` и `WWW-Authenticate``, и, насколько мне известно, я не смог найти ничего полезного для себя., @M A K

попробуйте выполнить поиск по HTML-тегам... если вы сможете определить HTML-код всплывающего окна входа в систему, это может помочь найти теги во всплывающем окне., @jsotola

@jsotola на основе [это](https://stackoverflow.com/questions/928874/how-do-i-keep-firefox-from-prompting-for-username-password-with-http-basic-auth/19102200# 19102200) вопрос. Думаю, он возник из браузера, и я искал не там, где надо!, @M A K

Я не знаю конкретного метода аутентификации. Я хотел отметить, что нет никакой функциональной разницы, если вы делаете веб-запрос, введя адрес в браузере и нажав Enter, или написав веб-запрос в коде JavaScript веб-сайта., @chrisl

@chrisl форма, которую я написал, представляет собой форму входа в систему, поэтому мне придется использовать метод аутентификации. В противном случае имя пользователя и пароль будут отправлены в виде открытого текста!, @M A K


1 ответ


1

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

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

Это неверно. То, как именно отправляются данные, зависит от того, как вы реализуете свой сайт входа/действия. Вы также можете подключиться к событию формы submit и использовать javascript с чем-то отличным от базовой аутентификации, например с дайджест-аутентификацией, о которой вы упомянули. Таким образом, ваша веб-страница, которая обслуживается из ESP, будет содержать красивую HTML-форму и код JavaScript, который использует событие submit формы и выполняет веб-запрос к ESP для / конечная точка openthefdoor, предоставляющая учетные данные в виде дайджеста (хешей).

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

Я не могу предоставить вам готовый пример такого javascript-кода, и это не по теме этого сайта Arduino. Хотя вы сможете найти пример кода в Интернете. Возможно, выполнив поиск по запросу «дайджест-аутентификация Javascript»; или подобное.

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

,