BurgerEditorUtil
in package
Table of Contents
Constants
- HTACCESS_DENY_ALL : mixed = <<<'HTACCESS' # BurgerEditor が自動生成したファイルです。 # こ...
- 全面拒否用の .htaccess の内容
- HTACCESS_DENY_EXECUTABLE : mixed = <<<'HTACCESS' # BurgerEditor が自動生成したファイルです。 # 画...
- 実行され得る拡張子のみ拒否する .htaccess のテンプレート
Methods
- b64d() : string
- baserCMS標準のbase64UrlsafeEncodeが連続ドットのファイル名を禁止した特定サーバで 動作しないため独自定義のdecode版
- b64e() : string
- baserCMS標準のbase64UrlsafeEncodeが連続ドットのファイル名を禁止した特定サーバで 動作しないため独自定義
- ensureUploadDirProtection() : void
- アップロードディレクトリに .htaccess を設置する
- getAddonPath() : array<string|int, string>
- Addon のパスを取得する
- getBlockPath() : bool|string
- ブロックのパスを取得する
- getDeniedExts() : array<string|int, string>
- アップロードを常に拒否する拡張子の一覧を取得する
- getEditorFieldNames() : array<string|int, string>
- エディタが素の HTML で出力する入力要素の name 属性を収集する
- getExtension() : bool
- 拡張子取得
- getFileNameNoExtension() : false|string
- getFileNameNoExtension
- getGoogleMapApiKey() : string
- GoogleMapAPI Keyを取得
- getSuffix() : string
- 静的ファイルに対するサフィックスを取得する
- getTypePath() : bool|string
- タイプのパスを取得する
- mb_basename() : mixed
- マルチバイト対応 basename
Constants
HTACCESS_DENY_ALL
全面拒否用の .htaccess の内容
public
mixed
HTACCESS_DENY_ALL
= <<<'HTACCESS'
# BurgerEditor が自動生成したファイルです。
# このディレクトリのファイルは BurgerEditor の dl アクション経由でのみ配信するため、
# 直接の HTTP アクセスを拒否します。
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
</IfModule>
HTACCESS
mod_authz_core の有無で Apache 2.4 / 2.2 の記法を出し分ける。 php_flag は PHP-FPM 環境で「Invalid command」となり 500 を招くため使用しない。
HTACCESS_DENY_EXECUTABLE
実行され得る拡張子のみ拒否する .htaccess のテンプレート
public
mixed
HTACCESS_DENY_EXECUTABLE
= <<<'HTACCESS'
# BurgerEditor が自動生成したファイルです。
# 画像は直接配信するため、サーバーサイドで実行され得る拡張子のみ拒否します。
# 一覧は BurgerEditor の設定 Bge.deniedExtension から生成しています。
<FilesMatch "(?i)\.(%s)$">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
</IfModule>
</FilesMatch>
HTACCESS
画像は直接配信する必要があるため全面拒否にはできない。 %s には Bge.deniedExtension から生成した拡張子の正規表現が入る。
Methods
b64d()
baserCMS標準のbase64UrlsafeEncodeが連続ドットのファイル名を禁止した特定サーバで 動作しないため独自定義のdecode版
public
static b64d(string $str) : string
Parameters
- $str : string
Return values
stringb64e()
baserCMS標準のbase64UrlsafeEncodeが連続ドットのファイル名を禁止した特定サーバで 動作しないため独自定義
public
static b64e(string $str) : string
Parameters
- $str : string
Return values
stringensureUploadDirProtection()
アップロードディレクトリに .htaccess を設置する
public
static ensureUploadDirProtection() : void
アップロード時の拡張子制限に加えた多層の措置。 files/bgeditor/other/ は dl アクション経由でのみ配信するため全面拒否とし、 files/bgeditor/img/ は直接配信が必要なため該当する拡張子のみ拒否する。 files/bgeditor/ 直下はサンプルPDF等を直リンクしているため対象外とする。
既存の .htaccess は上書きしない(サイト固有の設定を壊さないため)。
getAddonPath()
Addon のパスを取得する
public
static getAddonPath() : array<string|int, string>
Return values
array<string|int, string>getBlockPath()
ブロックのパスを取得する
public
static getBlockPath(mixed $blockName) : bool|string
Parameters
- $blockName : mixed
Return values
bool|stringgetDeniedExts()
アップロードを常に拒否する拡張子の一覧を取得する
public
static getDeniedExts() : array<string|int, string>
Bge.deniedExtension を正規化して返す。アップロード時の判定と .htaccess の生成の双方がこれを参照する(一覧の重複定義を避けるため)。 配列とカンマ区切り文字列のどちらでも指定できるようにしている。
Return values
array<string|int, string>getEditorFieldNames()
エディタが素の HTML で出力する入力要素の name 属性を収集する
public
static getEditorFieldNames() : array<string|int, string>
BurgerEditor は編集フォーム内に FormHelper を経由しない input を出力するため、 それらは FormProtection のトークンに含まれないまま送信され「想定外のフィールド」 として検証を落とす。この一覧を unlockedFields として渡すことで、 content[id] 等の hidden フィールドを FormProtection の保護対象に 残したままエディタを動作させる。
収集元は次の2つ。
- テンプレートの走査(サードパーティプラグインが提供する Addon も getAddonPath() に含まれるため、外部で追加された name も自動的に対象となる)
- JS が動的に生成するフィールドの固定一覧(走査では検出できないもの)
永続キャッシュを持たないのは、Addon 追加時に古い一覧が残ると保存が丸ごと 失敗する形で問題が出るため。
Return values
array<string|int, string>getExtension()
拡張子取得
public
static getExtension(string $filename) : bool
Parameters
- $filename : string
Return values
boolgetFileNameNoExtension()
getFileNameNoExtension
public
static getFileNameNoExtension(mixed $filename) : false|string
Parameters
- $filename : mixed
Return values
false|stringgetGoogleMapApiKey()
GoogleMapAPI Keyを取得
public
static getGoogleMapApiKey() : string
Return values
stringgetSuffix()
静的ファイルに対するサフィックスを取得する
public
static getSuffix(mixed $filePath) : string
Parameters
- $filePath : mixed
Return values
stringgetTypePath()
タイプのパスを取得する
public
static getTypePath(string $typeName) : bool|string
Parameters
- $typeName : string
Return values
bool|stringmb_basename()
マルチバイト対応 basename
public
static mb_basename(mixed $str[, mixed $suffix = null ]) : mixed
Parameters
- $str : mixed
- $suffix : mixed = null