miken32/network-rules

Laravel 验证规则,用于检查 IP 地址和网络

v2.0 2024-04-18 21:15 UTC

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 网络。如果提供,掩码中的位数必须在 lowhigh 之间。

'bounded_network'   => 'netv4:20,24',
'unbounded_network' => 'netv4'

netv6:low,high

待验证的字段必须是 CIDR 表示法中的 IPv6 网络。如果提供,掩码中的位数必须在 lowhigh 之间。

'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 规则中所述。如果提供,掩码中的位数必须在 lowhigh 之间。

routable_netv4:low,high

待验证的字段必须是一个全局可路由的 IPv4 网络,使用 CIDR 表示法。网络不得与任何私有或保留的范围重叠,如 private_ip 规则中所述。如果提供,掩码中的位数必须在 lowhigh 之间。

routable_netv6:low,high

正在验证的字段必须是使用CIDR表示法的全局可路由的IPv6网络。网络不能与任何私有或保留范围重叠,具体请参考private_ip规则。如果提供,掩码中的位数必须在lowhigh之间。

用法

包含的验证规则既可以作为传统的基于字符串的验证规则使用,也可以作为实例化类使用。以下代码块执行相同的验证。

<?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
        ];
    }
}