Skip to content

【メール】フィールド名にMySQLの予約語を登録するとエラーが発生する #4332

@teratai3

Description

@teratai3

概要

メールフィールドの管理画面(/baser/admin/bc-mail/mail_fields/index/{id})から、フィールド名にMySQLの予約語(例: select)を登録すると、メール送信時にSQL構文エラーが発生する。

baserCMS version : 5.2.x

再現手順

  1. /baser/admin/bc-mail/mail_fields/index/{id} にアクセス
  2. フィールド名に select など MySQL の予約語を入力して登録
  3. フロントエンドのお問い合わせフォームから送信を実行

エラー内容

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use
near 'select) VALUES (...
Image

原因

  • MailFieldsTable のバリデーションに MySQL 予約語チェックが含まれていなかった
  • BcValidation::reserved()は既に実装されていたが、MailFieldsTable に適用されていなかった

参考

bc-custom-contentCustomFieldsTable では同様の問題に対して予約語バリデーションが適用済み

https://github.com/baserproject/basercms/blob/5.2.x/plugins/bc-custom-content/src/Model/Table/CustomFieldsTable.php#L75-L77

対応内容

MailFieldsTable::validationDefault() に同じように予約語バリデーションを追加する。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions