1. 使用预编译语句(Prepared Statements)+ 参数化查询

这是最推荐的防御手段,适用于几乎所有主流语言和数据库(如 Java 的 PreparedStatement、Python 的 cursor.execute() 参数方式、PHP 的 PDO 等)。

原理:

# Python 示例
cursor.execute("SELECT * FROM users WHERE username = %s AND password = %s", (user_input, password_input))

底层逻辑:
数据库驱动在发送 SQL 前会将语句结构和参数分离处理,参数作为“值”绑定在语法树中,攻击者无法篡改语法结构。


2. ORM 框架的使用(如 Hibernate, Django ORM, SQLAlchemy)

优点:

注意:


3. 输入校验(Input Validation)

用途:

限制:


4. 最小权限原则(Least Privilege Principle)

实践:

意义:


5. 错误信息控制

做法:


6. Web 应用防火墙(WAF)

角色:


批判性思考与误区警示: