有群友问题,可以不对外显示服务器 IP 可以实现吗?
现在咱们 CURD 的时候,很容易忽略一些基础知识的学习和理解,特别是在高级语言和 web 框架的生态之中。
首先这里服务器 IP 不是 HTTP 协议里面 header 里面返回的,所以不会是 web 服务器显性输出返回的,浏览器在对域名做 DNS 解析之后得到的 IP。有了 IP 地址和端口号客户端才能与服务端建立 socket 连接。
所以这是一个伪命题,只能对服务器做安全加固。简单点,如果是单机,比如设置防火墙,只对外开放 80 端口;复杂点,选用负载均衡服务的云产品不对外暴露内网应用服务器 ip。
不管怎样,浏览器上都会显示一个服务端的 ip 这个实事是不能改的。
最近各个社交平台都要显示 IP 真的有效吗?
最近微博、公众号、抖音都会显示发布者的客户端 IP 地址。我在想如果是为了缓解海外非法敌对势力造谣诽谤,这个有效吗,抛开实际场景而谈,显示的 IP 地址是不可信的,因为可以通过代理服务器来隐藏自己的设置 IP。
但是看了下面的图之后我觉得还是很有效果的,因为谣言一般都是第一人称视角来说的,具有很强的地域属性。
显示 IP 之后,拦截了 80% 的普通网络造谣者,如果上图想模拟上海人发言,他需要购买个上海机房的 ip 服务器做正向代理服务器,然后自己通过代理服务器来访问中国境内各个自媒体或者社交平台,如果要精准制造某个地域的谣言,成本就高了很多。
遇到网站被人镜像了,怎么办?
前段时间发现有个项目被人镜像了。也就是别人对我们的域名配置了正向代理,这个我们其实很难察觉。很大一部分原因,是因为原来全站的cdn资源没有设置 referer 校验,大大降低了别人镜像的成本。
那发现以后怎么处理呢?我搞了三个步骤:
- 对静态资源增加了 referer 白名单配置,镜像站上的图全裂了,后面应该不会有其他人来镜像了
- 在全局 js 里增加了当前域名里做了判断,如果是非法域名跳转到源站
- 对来源 ip 做封禁,展开说说
我最开始直接根据 case 1 里面通过浏览器里拿到的 ip 进行了封禁是不行的。现在很多应用对外提供的 ip (统一接入层)和其访问公网的 ip (出口 IP)是不一样的。所以需要通过在访问镜像站的时候增加一些标记值
,比如
https://mengkang.net/?f=sfsfdsfsfsfsfsf
然后通过一定时间的轮训访问,然后再到我们的后端服务器上通过对参数sfsfdsfsfsfsfsf
过滤找到客户端 ip 池,然后进行封禁