Дешифруйте заголовок в Apache (HTTPD)

Меня попросили взглянуть на то, возможно ли дешифровать заголовок во время обработки запроса.

Определенный вариант использования состоит в том, чтобы ответить на дешифрованный контент заголовка путем удаления другого заголовка из запроса (если дешифрованные данные не являются "правильными"). Данные в зашифрованном заголовке используются для проверки аспектов клиента.

Я вижу, как это может быть сделано легко с помощью mod_headers с незашифрованным значением заголовка, но я не смог найти что-либо при взятии заголовка, дешифровании его и использовании получающегося значения.

Я пропустил что-то, или разве это просто не выполнимо?

0
задан 8 March 2015 в 12:29
2 ответа

Это должен быть комментарий, но он немного длинный.

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

Но, давая вам преимущество сомнения ...

Вам потребуются алгоритм шифрования, вектор инициализации и кодировка полезной нагрузки в дополнение к ключу шифрования.

Вы уже должны знать, что Apache не может расшифровать данные, то есть вам нужно отправить данные в другое место, но тогда возникает вопрос о том, чего вы пытаетесь достичь. Является ли заголовок просто дополнением к сообщению или является сообщением в заголовке. Если это последнее, то почему система спроектирована таким образом?

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

Вы можете, например, направить запрос в скрипт php и использовать mcrypt или openssl чтобы расшифровать соответствующий заголовок, а затем создать новый запрос к фактической цели, но существует множество других способов решения проблемы, и этот подход не применим ко всем возможным сценариям.

0
ответ дан 4 December 2019 в 17:02

Вы можете сделать это с помощью mod_rewrite. Например, предположим, что / path / to / decryption / script - это сценарий, который принимает зашифрованное значение заголовка на свой стандартный ввод и выводит либо «хорошо», либо «плохо» в зависимости от того, в порядке ли значение.

RewriteEngine on
RewriteMap decryptmap ext:/path/to/decryption/script

# Set environment variable BAD_RESULT if the header decryption fails
RewriteCond %{decryptmap:%{HTTP:Header-to-decrypt}} bad
RewriteRule .* - [E=BAD_RESULT]

# Clear a header if the decryption failed
Header unset Header-to-clear env=BAD_RESULT

Вы также можете включить другие данные в стандартный ввод для скрипта. Например:

RewriteCond %{decryptmap:%{HTTP:Header-to-decrypt}_%{ENV:varname}_%{HTTP:Another-header}} bad

и пусть скрипт разделит значения. См. RewriteCond для получения списка типов значений, которые вы можете использовать.

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

См. «Внешняя программа перезаписи» в документации RewriteMap , где приведен список других проблем, на которые следует обратить внимание при использовании внешних программ перезаписи.

1
ответ дан 4 December 2019 в 17:02

Теги

Похожие вопросы