Files
2025-09-25 03:32:26 +08:00

21 lines
1001 B
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### 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;
```
**注意**:这种引用方法只用于处理**数据库对象名**,不应用于处理**用户输入数据**