国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

如何在中間件過濾參數(shù)?

andyzu
<?php

namespace app\middleware;

use Webman\Http\Request;
use Webman\Http\Response;
use Webman\MiddlewareInterface;

class ParamFilterMiddleware implements MiddlewareInterface
{
    public function process(Request $request, callable $handler): Response
    {
        // 獲取 POST 參數(shù)
        $param = $request->post();

        // 確保 $param 是數(shù)組
        if (!is_array($param)) {
            $param = [];
        }

        // 過濾參數(shù)
        $param = array_map(function($value) {

            // 去除空格
            $value = trim($value);

            // 去除 HTML 標(biāo)簽
            $value = strip_tags($value);

            // 進一步過濾 SQL 注入風(fēng)險
            $value = preg_replace('/[\'\"\\\;]+/', '', $value); // 去除引號和分號等
//            dump($value);
            return $value;
        }, $param);

        dump('------------------',$param);
        // 將過濾后的參數(shù)重新設(shè)置回請求
        $request->post($param);

        return $handler($request);
    }
}

我寫了個過濾的中間件,并且注冊了中間件:

return [
    // 全局中間件
    '' => [
        // 過濾請求參數(shù)的中間件
        \app\middleware\ParamFilterMiddleware::class,
    ]

];

但是我在控制器里用 $param = $request->all(); 或者 $param = $request->post(); 接收不到,啥原因?

693 2 1
2個回答

設(shè)想

$request->post($param);

這個post只能取值,不能賦值

  • 暫無評論
tanhongbin

用orm 就不用擔(dān)心注入的問題了,最好不要自己手動拼接sql 代碼復(fù)雜度高不說 還容易出問題

  • 暫無評論
??