目前,我正在开展一个设计和实施防火墙的项目。一切都很好。在这里,我将过滤通过TCP端口的所有数据包。但是,如果页面被阻止,我需要发送自定义页面。例如“您的页面被管理员阻止”。我不知道该怎么做。我可以使用raw sockets来完成吗?如果是这样请告诉我,怎么样?但据我所知,原始套接字不能用于在Windows XP SP2及更高版本上发送,还有其他解决方案吗?
编辑:我使用C ++为IP地址过滤器创建DLL。然后我在我的C ++程序中导入它。 IP地址阻塞很好。但是当浏览器找不到页面时,我的客户需要自定义消息。
答案 0 :(得分:0)
如果您有选择地允许访问某些网页,那么您基本上就像代理一样。如果你想用错误页面回复客户,你需要更像一个。
发出HTTP请求的浏览器将在它打开的同一连接上获得响应。为了返回“被阻止”页面,您需要确定连接是否是您不希望用户去的地方,如果不是,则返回有效的HTTP响应(即使该响应是HTTP错误)比如“403 Forbidden”或更适合代理的东西)在同一个连接上。
如果您在连接打开之前阻止连接,即:阻止访问某些IP地址,那么您就会陷入困境。您可以做的最多就是返回一条ICMP消息,说明主机不可用。如果可以,您至少需要接受连接,接受传入的请求,并回复您的错误消息。更少,浏览器通常不知道如何处理它。
答案 1 :(得分:0)
嘿,因为你正在处理那个低级别的
您无法通过修改HTTP标头来重定向请求吗?