SQL注入:当应用程序直接拼接用户输入到SQL语句中(如SELECT * FROM users WHERE id = 用户输入),攻击者可输入1 OR 1=1使条件恒成立,或注入'; DELETE FROM users; --删除数据。
防御方法:
1. ORM框架使用:通过Hibernate、MyBatis等框架自动处理参数转义,避免手动拼接SQL。
2. 存储过程:将SQL逻辑封装在数据库预定义的存储过程中,减少动态SQL生成。
3. Web应用防火墙(WAF):部署WAF拦截常见SQL注入特征(如UNION SELECT、EXEC等关键词)。... 展开详请
答案:SQL存进数据库通常使用UTF-8编码,它能支持全球大多数语言字符,避免乱码问题。
解释:数据库编码决定了如何存储和读取文本数据。UTF-8是变长编码,兼容ASCII且节省空间,适合多语言环境。若数据库或表未明确指定编码,可能默认使用Latin1等单字节编码,导致中文等非ASCII字符存储异常。
举例:创建MySQL表时指定UTF-8编码:
```sql
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
(注:`utf8mb4`是MySQL对完整UTF-8的支持,兼容emoji等4字节字符)
腾讯云相关产品推荐:使用**腾讯云数据库MySQL**或**TDSQL**时,可在控制台创建实例时选择UTF-8编码(如`utf8mb4`),或在参数配置中调整`character_set_server`为`utf8mb4`确保兼容性。... 展开详请