Laravel API请求体字段如何校验IP地址格式合法性?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1006个文字,预计阅读时间需要5分钟。
直接使用 ip 规则即可,Laravel 原生支持,无需额外包或正则表达式。
它会同时校验 IPv4 和 IPv6(除非你明确限定);但注意:它只检查格式合法性,不判断是否真实可达、是否私有、是否被封禁。
-
ip:接受 IPv4 或 IPv6(如192.168.1.1、::1) -
ipv4:仅 IPv4(10.0.0.255合法,::ffff:127.0.0.1不合法) -
ipv6:仅 IPv6(2001:db8::1合法,127.0.0.1不合法) - 多个规则可组合,比如
required|ip|not_in:127.0.0.1,::1
示例:
request()->validate([ 'client_ip' => 'required|ip' ]);
从 request header 取 X-Forwarded-For 后怎么安全校验
别直接信任 X-Forwarded-For 的原始值——它可能被客户端伪造,也可能含多个 IP(逗号分隔),还可能混入非 IP 字符(如 1.2.3.4, 127.0.0.1, unknown)。
Laravel 默认的 $request->ip() 已经做了基础代理链解析,但如果你手动取 header,就得自己清理和校验。
本文共计1006个文字,预计阅读时间需要5分钟。
直接使用 ip 规则即可,Laravel 原生支持,无需额外包或正则表达式。
它会同时校验 IPv4 和 IPv6(除非你明确限定);但注意:它只检查格式合法性,不判断是否真实可达、是否私有、是否被封禁。
-
ip:接受 IPv4 或 IPv6(如192.168.1.1、::1) -
ipv4:仅 IPv4(10.0.0.255合法,::ffff:127.0.0.1不合法) -
ipv6:仅 IPv6(2001:db8::1合法,127.0.0.1不合法) - 多个规则可组合,比如
required|ip|not_in:127.0.0.1,::1
示例:
request()->validate([ 'client_ip' => 'required|ip' ]);
从 request header 取 X-Forwarded-For 后怎么安全校验
别直接信任 X-Forwarded-For 的原始值——它可能被客户端伪造,也可能含多个 IP(逗号分隔),还可能混入非 IP 字符(如 1.2.3.4, 127.0.0.1, unknown)。
Laravel 默认的 $request->ip() 已经做了基础代理链解析,但如果你手动取 header,就得自己清理和校验。

