jsp获取客户端ip地址
JSP里获取客户端IP,获户端十有八九你写的取客是 request.getRemoteAddr()。这行代码在本地测试时永远返回127.0.0.1,地址看着挺正常。获户端可一旦部署到生产环境,取客前面挂了Nginx或者Apache代理,地址这方法拿到的获户端就全是代理服务器的IP——清一色的127.0.0.1,或者内网网关地址。取客
我见过不少新手在这上面栽跟头。地址有个同事调了一下午,获户端最后发现所有用户日志里的取客IP都一样,还以为是地址数据库查询写错了。其实问题出在请求链路中间多了层转发。获户端
要拿到真实IP,取客得从HTTP头里找。地址代理服务器一般会把原始IP塞进 X-Forwarded-For 或 X-Real-IP 这两个请求头里。Nginx默认配置 proxy_set_header X-Real-IP $remote_addr;,Apache的mod_proxy也有类似设置。所以代码得改成先看请求头,再看 getRemoteAddr() 兜底。
写个工具方法大概长这样:
public String getClientIp(HttpServletRequest request) { String ip = request.getHeader("X-Real-IP"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("X-Forwarded-For"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; } 但这里有个坑——X-Forwarded-For 可能是逗号分隔的一串IP,比如 1.2.3.4, 10.0.0.1。这是因为每经过一层代理,代理服务器会把自己的IP追加到末尾。所以取的时候得拿第一个,那是客户端的真实地址。直接 split(",")[0] 再trim一下。
另一个坑是伪造问题。HTTP头是可以随便改的,用户拿curl直接 -H "X-Forwarded-For: 8.8.8.8" 就能骗过你的代码。如果IP只用来做展示、统计,问题不大。但你要是拿它做登录限制、防刷、风控,那就得小心了。最靠谱的办法是只信任离你最近的那层代理设置的头部,比如Nginx里用 $http_x_real_ip 覆盖掉用户传上来的值,后端再取就安全了。
还有种情况,你用了CDN,比如Cloudflare。它的请求头是 CF-Connecting-IP,得单独适配。不过一般CDN也会回源时把原始IP放进 X-Forwarded-For,所以通用方案通常够用。
再补一句,IPv6环境下 getRemoteAddr() 返回的是像 240e:390:xxxx 这样的长串,存数据库时VARCHAR别只给15位,至少50。我见过有人因为字段长度不够,IPv6地址被截断,查日志时怎么都对不上号。
最后给个建议:别每次请求都现写这堆判断逻辑,封装成一个静态方法放在公共类里,或者写个过滤器统一处理。代码整洁是一方面,更重要的是处理逻辑只维护一份,以后要加新的代理类型,改一处就行。
简单说,JSP取客户端IP的核心就三步:先看代理头,取第一个非unknown的值,最后用 getRemoteAddr() 兜底。至于安全性,那是另一层要考虑的事。
(责任编辑:时尚)
-
打开Wireshark官网wireshark.org),第一眼看到的不是花哨的动效,而是一张深蓝色的数据包捕获截图。这个界面二十年没大变过,却依然让全球网络工程师心跳加速——毕竟,它是互联网的“显微镜
...[详细]
-
百度指数官网的首页,常年挂着一句“基于海量网民行为数据”。这话没毛病,但不够性感。真正让我觉得它厉害的时刻,是某个深夜,我突发奇想,搜了一下“头皮屑”这个词条。你猜怎么着?它的搜索曲线在每年春秋两季都
...[详细]
-
实验室里最磨人的不是跑胶,也不是提RNA,而是做酶标板实验时一遍遍洗板。八道排枪戳进板孔,液体滋啦滋啦冲进去又吸出来,像给一群小杯子洗澡。可偏偏这活儿得心细,手一抖,某个孔里液体残留多冲两遍,那个孔
...[详细]
-
半夜两点,我盯着屏幕上那个红得刺眼的漏洞报告,后背发凉。那是一个电商项目的后台登录接口,SQL注入漏洞,危害等级“严重”。修复它只花了我十分钟,但发现它——靠的是一个免费的、连注册都不用的扫描工具。
...[详细]
-
去年带过一个转行做程序员的学生,三十四岁,之前是卖建材的。他第一次写代码,把分号打成了中文全角,报错信息刷了半屏,他盯着屏幕愣了半天,问我:“这个红字是不是在骂我?”我说不是,它只是告诉你哪儿错了。他
...[详细]
-
打开交管局对外网站,第一眼看到的不是大红标题,也不是领导致辞,而是满屏的“办事指南”。这其实是件好事,至少对普通人来说,比看新闻要实用得多。但问题在于,那些指南写得像法律条文——每个字都认识,连起来
...[详细]
-
凌晨两点,我盯着手机屏幕上那条“您的贷款申请已通过,额度8万元”的短信,差点就点了链接。冷静下来后查了查,发件人是个+86开头的境外号码,网址域名注册才三天。这年头,骗子比银行还勤快。 虚假贷款诈骗的
...[详细]
-
聊城吧百度贴吧,我刷了得有七八年。最早是2016年,刚上大学那会儿,闲着没事就点进去看。那时候首页全是“聊城一中门口又堵了”“开发区哪家烧烤好吃”这种帖子,没什么营养,但就是能让人一直往下翻。 现在的
...[详细]
-
《王者荣耀辅助卡密购买平台》 半夜两点,游戏群里有人甩出一条链接,配文“懂的都懂”。点进去,页面简陋得像十年前的论坛,背景是暗紫色渐变,中央一行大字“王牌辅助,稳定不封”,下面就是输入卡密激活的框。这
...[详细]
-
凌晨两点,某金融公司机房的空调嗡嗡作响。安全工程师老周盯着屏幕,指尖在键盘上敲下一行命令。三分钟后,他拿到了那台核心数据库服务器的root权限——不是通过什么高深莫测的零日漏洞,只是利用了运维人员贴在
...[详细]

在学科教学中如何进行思政教育渗透
在线子域名扫描
企业网站营销典型案例
微软产品2019年2月安全漏洞
小旋风是什么意思
