miken32 / network-rules
Laravel 验证规则,用于检查 IP 地址和网络
Requires
- php: ^8.0
- illuminate/support: ^10.0|^11.0
- illuminate/validation: ^10.0|^11.0
Requires (Dev)
- fakerphp/faker: ^1.0
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.5|^11.0
This package is auto-updated.
Last update: 2024-09-18 22:20:59 UTC
README
规则集合
用于
可靠的验证
互联网协议地址、
网络和子网
作者希望这些规则将有助于
Laravel 程序员 及其他用户。
安装
composer require miken32/network-rules
可用验证规则
以下是可用规则及其用法列表。
在网络上
IP 或网络
Netv4
Netv6
私有 IP
私有 IPv4
私有 IPv6
私有网络
可路由 IP
可路由 IPv4
可路由 IPv6
可路由网络
可路由 Netv4
可路由 Netv6
in_network:cidr,...
待验证的字段必须是给定网络中的 IP 地址。网络必须使用 CIDR 表示法给出,可以是 IPv4 或 IPv6 网络。
'ip4_address' => 'in_network:192.168.0.1/24',
'some_address' => 'in_network:192.168.0.0/24,192.168.1.0/24,192.168.2.0/24',
'ip6_address' => 'in_network:fd03:224f:a5c3:99ae::0/64'
ip_or_net
待验证的字段必须是 CIDR 表示法中的 IP 地址或网络。地址或网络可以是 IPv4 或 IPv6。
netv4:low,high
待验证的字段必须是 CIDR 表示法中的 IPv4 网络。如果提供,掩码中的位数必须在 low
和 high
之间。
'bounded_network' => 'netv4:20,24',
'unbounded_network' => 'netv4'
netv6:low,high
待验证的字段必须是 CIDR 表示法中的 IPv6 网络。如果提供,掩码中的位数必须在 low
和 high
之间。
'bounded_network' => 'netv6:56,64'
'unbounded_network' => 'netv6'
private_ip
待验证的字段必须是私有 IPv4 或 IPv6 地址。私有地址定义为以下网络之一内的地址:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
- fc00::/7
以下网络被视为 保留,而不是 私有。它们 不被 此规则视为有效。
- 0.0.0.0/8
- 127.0.0.0/8
- 169.254.0.0/16
- 240.0.0.0/4
- ::/128
- ::1/128
- 2001:10::/28
- 2001:db8::/32
- 3ffe::/16
- 5f00::/8
- fe80::/10
private_ipv4
待验证的字段必须是私有 IPv4 地址。被视为私有的网络在 private_ip
规则中描述。
private_ipv6
待验证的字段必须是私有 IPv6 地址。被视为私有的网络在 private_ip
规则中描述。
private_net
待验证的字段必须是 CIDR 表示法中的私有 IP 网络。被视为私有的网络在 private_ip
规则中描述。
routable_ip
待验证的字段必须是一个全局可路由的 IPv4 或 IPv6 地址。这排除了所有私有和保留的范围,如 private_ip
规则中所述。
routable_ipv4
待验证的字段必须是一个全局可路由的 IPv4 地址。这排除了所有私有和保留的范围,如 private_ip
规则中所述。
routable_ipv6
待验证的字段必须是一个全局可路由的 IPv6 地址。这排除了所有私有和保留的范围,如 private_ip
规则中所述。
routable_net:low,high
待验证的字段必须是一个全局可路由的 IP 网络,使用 CIDR 表示法。网络不得与任何私有或保留的范围重叠,如 private_ip
规则中所述。如果提供,掩码中的位数必须在 low
和 high
之间。
routable_netv4:low,high
待验证的字段必须是一个全局可路由的 IPv4 网络,使用 CIDR 表示法。网络不得与任何私有或保留的范围重叠,如 private_ip
规则中所述。如果提供,掩码中的位数必须在 low
和 high
之间。
routable_netv6:low,high
正在验证的字段必须是使用CIDR表示法的全局可路由的IPv6网络。网络不能与任何私有或保留范围重叠,具体请参考private_ip
规则。如果提供,掩码中的位数必须在low
和high
之间。
用法
包含的验证规则既可以作为传统的基于字符串的验证规则使用,也可以作为实例化类使用。以下代码块执行相同的验证。
<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class MyFormRequest extends FormRequest { public function rules(): array { return [ 'address' => ['in_network:192.168.10.0/24'], // must be an IPv4 address in the specified network 'subnet' => ['netv4'], // must be an IPv4 CIDR network 'ipv6_subnet' => ['netv6:48,56'], // must be an IPv6 CIDR network between 48 and 56 bits ]; } }
<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Miken32\Validation\Network\Rules; class AnotherFormRequest extends FormRequest { public function rules(): array { return [ 'address' => [new Rules\InNetwork('192.168.10.0/24')], // must be an IPv4 address in the specified network 'subnet' => [new Rules\Netv4()], // must be an IPv4 CIDR network 'ipv6_subnet' => [new Rules\Netv6(48, 56)], // must be an IPv6 CIDR network between 48 and 56 bits ]; } }