C #, пользовательское сообщение об ошибке для моего брандмауэра - PullRequest
1 голос
/ 09 ноября 2010

В настоящее время я занимаюсь проектом по разработке и внедрению брандмауэра. Все работает нормально. Здесь я фильтрую все пакеты, проходящие через порт TCP. Но мне нужно отправить пользовательскую страницу, если страница заблокирована. Как «Ваша страница заблокирована администратором». Я понятия не имею, как это сделать. Могу ли я сделать это используя raw sockets ? Если да, пожалуйста, скажите мне, как? Но, как я знаю, raw socket не работает для отправки в Windows XP SP2 и более поздних версиях, есть ли другое решение?

РЕДАКТИРОВАТЬ: я использовал C ++ для создания DLL для фильтра IP-адресов. Затем я импортировал его в свою C ++ программу. IP-адреса блокируются нормально. Но мой клиент нуждается в специальном сообщении, когда браузер не находит его страницу.

Ответы [ 2 ]

0 голосов
/ 10 ноября 2010

Эй, поскольку вы работаете на этом низком уровне

Не можете ли вы перенаправить запрос, изменив его заголовок HTTP?

0 голосов
/ 09 ноября 2010

Если вы выборочно разрешаете доступ к определенным веб-страницам, вы, по сути, действуете как прокси.И вам нужно будет действовать как единое целое, если вы хотите отвечать клиентам со страницей с ошибкой.

Браузер, отправляющий HTTP-запрос, будет ожидать ответа на том же соединении, которое он открыл.Чтобы вернуть «заблокированную» страницу, вам нужно определить, находится ли соединение в каком-то месте, куда вы не хотите, чтобы пользователь пошел, и если нет, вернуть действительный ответ HTTP (даже если этот ответ является ошибкой HTTP).например, «403 Forbidden» или что-то более подходящее для прокси-сервера) для того же соединения .

Если вы блокируете соединение еще до его открытия, т.е. блокируете доступ к определенным IP-адресамтогда вы застряли.Максимум, что вы могли бы сделать, это вернуть сообщение ICMP о том, что хост недоступен.По крайней мере, вам нужно принять соединение, принять входящий запрос и ответить сообщением об ошибке.Меньше, и браузер, как правило, не знает, что с ним делать.

...