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

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

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

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

  • MySQL:使用反引号(`)

    SELECT `user-name` FROM `user's_data` WHERE id = 1;
    
  • PostgreSQL、Oracle、SQL Server:使用双引号(")

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

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

Copyright © 版权信息 all right reserved,powered by Gitbook该文件修订时间: 2025-09-25 03:13:25

results matching ""

    No results matching ""