### SQL 注入用转义字符防御时，如果遇到数据库的列名或是表名本身就带着特殊字符怎么办

在这种情况下，**不应该**对这些数据库对象名称使用转义字符，因为它们是数据库的合法标识符，而不是用户输入的数据。如果进行了转义，数据库将无法正确识别这些对象

**正确的做法：使用反引号或双引号进行引用**

为了正确地处理包含特殊字符的列名或表名，标准的做法是使用**反引号（`）**或**双引号（"）**将这些标识符括起来。不同的数据库系统有不同的规定：

- **MySQL**：使用**反引号（`）**

  ```sql
  SELECT `user-name` FROM `user's_data` WHERE id = 1;
  ```

- **PostgreSQL、Oracle、SQL Server**：使用**双引号（"）**

  ```sql
  SELECT "user-name" FROM "user's_data" WHERE id = 1;
  ```

**注意**：这种引用方法只用于处理**数据库对象名**，不应用于处理**用户输入数据**