返回
Hyperf框架篇之如何在项目中快速保护接口安全,防御羊毛党,打击薅羊毛行为!
后端
2023-09-09 14:57:22
前言
前面分享了两篇关于Hyperf框架中RPC 同语言框架跨语言框架的调用,今天来点有意思,具有实战意义。
接口参数混淆
在项目中,我们会经常遇到接口参数被黑客恶意篡改的情况,导致接口出现问题,轻则造成数据泄露,重则可能造成资金损失。为了防止这种情况的发生,我们需要对接口参数进行混淆。
Hyperf框架提供了中间件机制,我们可以通过编写中间件来实现接口参数的混淆。
中间件实现
我们首先需要创建一个中间件类,该类需要继承Hyperf\HttpServer\Middleware\BaseMiddleware
类。
namespace App\Middleware;
use Hyperf\HttpServer\Request;
use Hyperf\HttpServer\Response;
class ParamsObfuscationMiddleware extends BaseMiddleware
{
public function process(Request $request, Response $response)
{
$params = $request->all();
// 对参数进行混淆
$request->replace($params);
return $response;
}
}
在中间件类中,我们首先获取了请求中的所有参数,然后对这些参数进行混淆。混淆的方法有很多种,这里我们使用简单的异或运算。
function obfuscate($value)
{
$key = 'my-secret-key';
$value = json_encode($value);
$value = base64_encode($value);
$value = strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', 'ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba9876543210-_');
return $value;
}
在混淆完参数后,我们将混淆后的参数重新设置到请求中。这样,当接口被调用时,混淆后的参数就会被传递给控制器。
配置中间件
配置中间件有两种方式:
- 在
config/middleware.php
文件中配置 - 在路由注解中配置
// 在config/middleware.php文件中配置
config([
'middlewares' => [
'http' => [
App\Middleware\ParamsObfuscationMiddleware::class,
],
],
]);
// 在路由注解中配置
#[Middleware(App\Middleware\ParamsObfuscationMiddleware::class)]
public function index()
{
//
}
总结
通过在Hyperf框架中使用中间件,我们可以轻松地实现接口参数的混淆。这样,就可以有效地防止黑客恶意篡改接口参数,从而保护项目的接口安全。