Chrome ссылка для скачивания с basi c auth не работает, в FF и Postman это работает - PullRequest
0 голосов
/ 21 апреля 2020

Мы предоставляем пользователям возможность скачивать некоторые файлы. Доступ к файлам защищен basi c auth. После ввода своих учетных данных пользователь получает обзор файлов, которые он может загрузить.

Пример:

  1. он просматривает на https://test.com/documents/
  2. он вводит учетные данные:
  3. HTML -страница (индекс) со списком всех загружаемых файлов в этой папке, вкл. отображается ссылка (https://test.com/documents/file1.pdf...).

Каждая ссылка на файл имеет следующую структуру:

<a href="document.pdf" download>Document</a>
  • После ввода Учетные данные Я могу получить доступ к файлу индекса в FF и Chrome. => Basi c auth. работает
  • Я могу скачать файл в Firefox
  • Chrome дает мне 403 запрещенную ошибку

=> Это не имеет никакого смысла, как я вижу индексную страницу в Chrome, которая защищена тем же htaccess.

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

Вот заголовки Chrome запроса:

GET /documents/file1.pdf HTTP/1.1
Host: test.com
Connection: keep-alive
Cache-Control: max-age=0
Authorization: Basic base64_passwd
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: _et_coid=ddfsdfsdf; SameSite=None
Range: bytes=0-786431
If-Range: "224c1c-5a3b39e8694da"

Firefox заголовки:

Referrer Policy:no-referrer-when-downgrade
Accept text/html,application/xhtml+xm…ml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding gzip, deflate, br
Accept-Language de,en-US;q=0.7,en;q=0.3
Authorization: Basic base64_passwd
Cache-Control no-cache
Connection keep-alive
DNT 1
Host test.com
Pragma no-cache
Upgrade-Insecure-Requests 1
User-Agent Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/75.0

htaccess-файл:

AuthType Basic
AuthName "Authentication Required"
AuthUserFile "/pathToHTPASSWD/.htpasswd"
Require valid-user

Мне удалось сузить вниз в районе проблемы. В журналах apache упоминается, что mod_security выдает ошибку:

ModSecurity: Access denied with code 403 (phase 2). String match "bytes=0-" at REQUEST_HEADERS:Range. [file ".../httpd/modsecurity.d/activated_rules/modsecurity_crs_20_protocol_violations.conf"] [line "428"] [id "958291"] [rev "2"] [msg "Range: field exists and begins with 0."] [data "bytes=0-786431"] [severity "WARNING"] [ver "OWASP_CRS/2.2.9"] [maturity "6"] [accuracy "8"] [tag "OWASP_CRS/PROTOCOL_VIOLATION/INVALID_HREQ"] [hostname "test.com"] [uri "/pathToFile/test.pdf"] [unique_id "Xp4Yavc8gbf6TnFOQIGlNwADABE"]

Кажется, что правило mod_security останавливается на чтении 0 вместо чтения целого: bytes = 0-786431

Некоторые рекомендуют другое правило => https://serverfault.com/questions/610940/apache-mod-security-crs-blocking-pdf-files

другие рекомендуют установить заголовок «Accept-Ranges none» Как отключить параметр диапазона в заголовке http-запроса?

Лично я думаю, что в правиле (части основных правил ModSecurity) есть ошибка.

Как лучше всего это решить?

Если вам нужна дополнительная информация, дайте мне знать .

Любые советы приветствуются!

Спасибо Крис

...