cedaro / wprestcop
一款用于管理WP REST API访问的WordPress插件。
v1.0.0
2016-02-06 01:31 UTC
Requires
- php: >=5.4.0
- composer/installers: ~1.0
Requires (Dev)
- phpunit/phpunit: *@stable
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配置默认的limit
和interval
设置。
<?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命令,以便无需编写代码即可配置插件。
潜在路线图
- 支持记录各种事件。
- 更多的速率限制策略。
- 更多路由级别的功能。
- 高级访问规则。
- 管理界面。