Изменение всплывающего окна, похожего на оповещение, в функции 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-е обновление: на основе этого вопроса Я думаю, всплывающее окно появляется из браузера, и я искал не в том месте!
@M A K, 👍0
Обсуждение1 ответ
Диалоговое окно аутентификации, которое вы получаете, предоставляется браузером. Вы не можете изменить это, поскольку это часть программного обеспечения браузера.
Я не хочу писать форму для аутентификации, поскольку она отправляет пароль в виде открытого текста.
Это неверно. То, как именно отправляются данные, зависит от того, как вы реализуете свой сайт входа/действия. Вы также можете подключиться к событию формы submit
и использовать javascript с чем-то отличным от базовой аутентификации, например с дайджест-аутентификацией, о которой вы упомянули. Таким образом, ваша веб-страница, которая обслуживается из ESP, будет содержать красивую HTML-форму и код JavaScript, который использует событие submit
формы и выполняет веб-запрос к ESP для / конечная точка openthefdoor
, предоставляющая учетные данные в виде дайджеста (хешей).
С точки зрения ESP (также известных как веб-серверы) функционально не имеет значения, выполняется ли веб-запрос на вход путем ввода адреса для входа в адресную строку или с помощью кода Javascript, встроенного в обслуживаемый веб-сайт. Оба являются простыми веб-запросами. Вам не нужно отправлять данные из формы напрямую (в незашифрованном виде)
Я не могу предоставить вам готовый пример такого javascript-кода, и это не по теме этого сайта Arduino. Хотя вы сможете найти пример кода в Интернете. Возможно, выполнив поиск по запросу «дайджест-аутентификация Javascript»; или подобное.
Примечание. Дайджест-аутентификация передает хэши учетных данных. Это не то же самое, что шифрование, особенно при использовании простого стандарта хеширования, такого как MD5. Лучше, чем простой текст, но с помощью хеш-таблицы злоумышленник все равно сможет прочитать учетные данные. Для шифрования вам понадобится TLS (https).
- Несколько клиентских серверов через Wi-Fi
- WebSocketsServer.h: No such file or directory
- Как получить данные из базы данных моего сервера в переменную в моем Arduino?
- Как получить параметры запроса от ESPAsyncWebServer?
- контент» не захватывается
- ESP32 в Arduino-IDE с FS.h и SPIFFS
- Веб-сервер Arduino: более быстрая альтернатива «indexof» для разбора запросов GET?
- Как разрешить междоменные запросы на ESP8266 WebServer
обыскал все файлы в папке 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