a-blog cms PHP API Reference

DatabaseNameValidator
in package

FinalYes

インストーラーで入力される DB 名・テーブル接頭辞の検証。

install の Database ステップは CREATE DATABASE \{db_name}`` / ALTER DATABASE ... を バッククォートで囲むだけで発行しており、バッククォートを含む値を渡すと SQL を抜けられる。 接頭辞(db_prefix)は全テーブル名に連結されるため同様に危険。ここで許可リスト方式に倒し、 想定外の文字を含む入力を CREATE/ALTER 前に弾く。判定のみの純粋ロジックとする。

Table of Contents

Constants

DATABASE_NAME_PATTERN  = '/\A[A-Za-z0-9_]+\z/'
DB 名の許可パターン。英数字・アンダースコアのみ(ハイフンは許可しない)。 バッククォート/空白/記号を排除して識別子エスケープの不備を無害化する。 MySQL の識別子仕様上はバッククォートで囲めばハイフンも安全だが、CLI ツールへの 引数渡し等バッククォートに依存しない文脈での再利用に備え、接頭辞と同じ許可リストに揃える。
MAX_IDENTIFIER_LENGTH  = 64
MySQL の識別子最大長。
PREFIX_PATTERN  = '/\A[A-Za-z0-9_]*\z/'
テーブル接頭辞の許可パターン。テーブル名に連結されるためハイフンは許可しない。 空文字(接頭辞なし運用)も許可する。

Methods

isValidDatabaseName()  : bool
isValidPrefix()  : bool

Constants

DATABASE_NAME_PATTERN

DB 名の許可パターン。英数字・アンダースコアのみ(ハイフンは許可しない)。 バッククォート/空白/記号を排除して識別子エスケープの不備を無害化する。 MySQL の識別子仕様上はバッククォートで囲めばハイフンも安全だが、CLI ツールへの 引数渡し等バッククォートに依存しない文脈での再利用に備え、接頭辞と同じ許可リストに揃える。

private mixed DATABASE_NAME_PATTERN = '/\A[A-Za-z0-9_]+\z/'

MAX_IDENTIFIER_LENGTH

MySQL の識別子最大長。

private mixed MAX_IDENTIFIER_LENGTH = 64

PREFIX_PATTERN

テーブル接頭辞の許可パターン。テーブル名に連結されるためハイフンは許可しない。 空文字(接頭辞なし運用)も許可する。

private mixed PREFIX_PATTERN = '/\A[A-Za-z0-9_]*\z/'

Methods

isValidDatabaseName()

public isValidDatabaseName(string $name) : bool
Parameters
$name : string
Return values
bool

isValidPrefix()

public isValidPrefix(string $prefix) : bool
Parameters
$prefix : string
Return values
bool

        
On this page

Search results