baserCMS クラスリファレンス

RegistrationRateLimiter
in package

クライアント登録のレート制限

動的クライアント登録は無認証で開いているため、無制限に行を増やせる。 IP 単位で回数を数え、上限を超えた登録を拒否する。

枠はキャッシュの有効期限(1時間)で切れる。登録のたびに書き直すため、 実際には「最後の登録から1時間」で枠がリセットされる。

呼び出し側が渡すクライアント IP は、TRUST_PROXY(config/bootstrap.php 参照)が 有効な場合 X-Forwarded-For ヘッダに依存する。前段プロキシが当該ヘッダを 適切に上書きしない構成では、送信元がヘッダを偽装してこの制限を回避できる。

Table of Contents

Constants

CACHE_CONFIG  : mixed = 'bc_mcp_registration'
キャッシュ設定名

Methods

hit()  : void
登録回数を1つ進める
isExceeded()  : bool
上限に達しているかを判定する
buildKey()  : string
キャッシュキーを組み立てる
getMaxPerHour()  : int
1時間あたりの上限件数を取得する
readCount()  : int
現在の登録回数を取得する

Constants

Methods

hit()

登録回数を1つ進める

public hit(string $clientIp) : void
Parameters
$clientIp : string

クライアントのIPアドレス

isExceeded()

上限に達しているかを判定する

public isExceeded(string $clientIp) : bool
Parameters
$clientIp : string

クライアントのIPアドレス

Return values
bool

buildKey()

キャッシュキーを組み立てる

private buildKey(string $clientIp) : string

IP アドレスをそのままキーにすると使用できない文字が混ざるため、 ハッシュ化する。

Parameters
$clientIp : string

クライアントのIPアドレス

Return values
string

getMaxPerHour()

1時間あたりの上限件数を取得する

private getMaxPerHour() : int
Return values
int

readCount()

現在の登録回数を取得する

private readCount(string $clientIp) : int
Parameters
$clientIp : string

クライアントのIPアドレス

Return values
int
On this page

Search results