Добавление водяного знака на веб-страницу - архитектура

Мне интересно добавить водяные знаки на веб-страницы, например. логотип интернет-провайдера. Я не прошу образец кода для HTML или CSS. Я думал о прокси-сервере, который будет добавлять водяной знак на любую веб-страницу, которую пытается посетить пользователь. Как должен вести себя прокси-сервер, когда пользователь запрашивает веб-сайт HTTPS? Есть ли другие подходы, кроме прокси-сервера, которые я мог бы попробовать?

Спасибо за все ответы


person user2305208    schedule 31.05.2015    source источник
comment
Что ж, мой вопрос был не в том, можно ли добавить водяной знак на веб-страницу? В любом случае спасибо за ответ. Почему, по-вашему, я не должен этого делать?   -  person user2305208    schedule 31.05.2015
comment
Это отличный способ заставить ваших пользователей презирать вас. Также невозможно автоматически безопасно изменить макет произвольной страницы.   -  person SLaks    schedule 31.05.2015
comment
Хорошая точка зрения. Я думал не о коммерческом решении, а о теме для своего университетского проекта (поскольку он еще не сделан).   -  person user2305208    schedule 31.05.2015


Ответы (1)


Резюме: Вы действительно не хотите этого делать.

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

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

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

Однако теперь вы разорвали цепочку доверия, подразумеваемую TLS, и теперь вы несете единоличную ответственность за безопасность между клиентом и пунктом назначения. Когда я подключаюсь к своему банку, наличие TLS гарантирует, что я а) подключен к реальному веб-сайту моего банка и б) никто не сможет перехватить мои, например, данные для входа. Вы нарушили и A, и B, потому что я больше не могу доверять тому, что я подключен к реальному веб-сайту, который я намеревался посетить, и вы или любое злонамеренное третье лицо можете перехватить и прочитать трафик между мной и моим банком, просто злоупотребив / взлом вашего прокси-сервера.

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

Пожалуйста, пожалуйста, не делай этого.

person Alex    schedule 01.06.2015
comment
Спасибо Алекс за ваш ответ. Я думал, что с HTTPS будет сложно, но теперь ясно вижу, что этого делать не стоит. Так что с HTTP не должно быть никаких (больших) проблем, верно? - person user2305208; 02.06.2015
comment
Скорее всего нет, но это зависит от конкретной реализации и окружения. И, честно говоря, я не понимаю, почему вы вообще хотите это сделать. - person Alex; 02.06.2015
comment
Мне было интересно, возможно ли это сделать, и если да, то я хочу попробовать это реализовать. Например. любой, кто использует мою домашнюю сеть Wi-Fi, увидит интернет-соединение, предоставляемое Anon, при посещении любого веб-сайта. - person user2305208; 02.06.2015
comment
Итак, если бы я хотел этого, какую архитектуру вы бы предложили? - person user2305208; 04.06.2015