cedaro/wprestcop

一款用于管理WP REST API访问的WordPress插件。

安装: 169

依赖: 0

建议者: 0

安全: 0

星标: 70

关注者: 11

分支: 12

开放问题: 2

类型:wordpress-plugin

v1.0.0 2016-02-06 01:31 UTC

This package is auto-updated.

Last update: 2024-08-29 04:03:29 UTC


README

使用速率限制和基于IP的规则来管理对WP REST API的访问。

贡献者: Brady Vercher 要求: WP 4.4+, PHP 5.4+ 测试到: 4.4 许可证: GPL-2.0+

速率限制

速率限制允许配置客户端在特定时间间隔内可以发起的请求数量。在WP Rest Cop中的默认设置为每小时500次请求。

速率限制功能需要持久对象缓存

头部信息

每次请求都会发送一些头部信息,以便客户端能够跟踪其当前限制。

如果客户端达到了限制,将发送额外的头部信息。

客户端可以发送一个HEAD请求来查看当前限制,而无需触发计数器。

配置设置

使用主插件实例的简单API配置默认的limitinterval设置。

<?php
/**
 * Set the rate limit to 10 requests every 5 minutes.
 */
add_action( 'wprestcop_plugin_loaded', function( $wprestcop ) {
	$wprestcop
		->set_limit( 10 )
		->set_interval( 5 * MINUTE_IN_SECONDS );
} );

设置也可以通过内置的WP CLI命令进行配置。

禁用速率限制

如果您只想使用IP规则功能并想禁用速率限制,请将间隔设置为-1

IP规则

IP规则可以在全局范围内配置,或者在路由级别作为一个简单的白名单或黑名单。

全局配置

<?php
/**
 * Global IP rules configuration.
 */
add_action( 'wprestcop_plugin_loaded', function( $wprestcop ) {
	$wprestcop->get_ip_rules()
		->allow( '192.168.50.4' ); // Also accepts an array of IP addresses.

	// Or...

	$wprestcop->get_ip_rules()
		->deny( '66.249.66.1' ); // Also accepts an array of IP addresses.
} );

当允许IP地址时,策略是拒绝不在白名单中的IP的所有请求。

拒绝IP地址时,情况正好相反。不在黑名单中的所有IP都将有权访问。

全局IP规则也可以通过内置的WP CLI命令进行配置。

路由配置

路由也可以配置为具有自己的IP规则。

<?php
/**
 * Register routes.
 */
add_action( 'rest_api_init', function () {
    register_rest_route( 'myplugin/v1', '/internal/(?P<id>\d+)', [
        'methods'  => 'GET',
        'callback' => 'my_awesome_expensive_func',
        'ips'      => [
            'allow' => [ '192.168.50.4' ],
            'deny'  => [ '66.249.66.1' ],
        ]
    ] );
} );

WP CLI命令

包含一些WP CLI命令,以便无需编写代码即可配置插件。

潜在路线图

  • 支持记录各种事件。
  • 更多的速率限制策略。
  • 更多路由级别的功能。
  • 高级访问规则。
  • 管理界面。