防止 SQL 注入(SQL Injection)的核心原则是:永远不要信任用户的输入,并将数据与代码(SQL 指令)分离。 以下是防止 SQL 注入最有效的方法,按重要性排序: 1. 使用预编译语句(Prepared Statements)/ 参数化查询 (最重要) 这是防御 SQL 注入的黄金标准。 在传统的 SQL 拼接中,数据库无法区分哪部分是指令,哪部分是数据。而使用预编译语句时,数据库会先编译 SQL 模板,然后再将用户输入作为纯粹的“参数”填入。无论输入中包含什么特殊字符(如 ),数据库都只将其视为字符串,而不会执行。 错误示例 (Java - 字符串拼接): 正确示例 (Java - PreparedStatement): 正确示例 (Python - 使用 sqlite3/psycopg2): 2. 使用 ORM 框架 (Object-Relational Mapping) 现代的 ORM 框架(如 Java 的 Hibernate/MyBatis,Python 的 Django ORM/SQLAlchemy,Node.js 的 Sequelize/TypeORM...