如何实现Web服务只允许特定客户端访问
需求来源
为了满足B/S系统给客户演示的需要,需要部署一套系统允许公网能够访问,便于业务人员到客户哪里进行系统演示,但是目前网络安全非常重要,希望能防止暴力破解或者端口扫描等黑客攻击。在用户名密码验证之外再加一层防护。
实现方式
通过Nginx 增加对 User-Agent 的访问控制进行限制,自定义一个User-Agent字符串,只有严格相等才能访问资源。
1、修改Nginx配置
server {
listen 80;
server_name localhost;
if ($http_user_agent != 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \
Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0/此处可增加任意字符串') {
return 403;
}
...
#省略其他配置
}
2、使用Edge浏览器下载扩展 user agent switcher
填入自定义的User-Agents,与Nginx中定义的一致
启动扩展,在指导的请求URL上将使用自定义的User-Agents。其他非自定义的将返回 403错误
不够这种方法也存在隐患,如果自定义的User-Agents泄露,就起不到任何作用了!可以定期对User-Agent进行更新。