SQL注入

输入的字符串中注入 SQL 指令,若程序当中忽略了字符检查,导致恶意指令被执行而遭到破坏或入侵

SQL 注入示例

  1. $id = $_GET['id'];
  2. $sql = "SELECT * FROM `user` WHERE `id`={$id}";

将传递参数改为

1;DROP TABLE OrdersTable—

SQL 注入防御

  • 使用预编译语句绑定变量(最佳方式)
  • 使用安全的存储过程(也可能存在注入问题)
  • 检查输入数据的数据类型(可对抗注入)
  • 数据库最小权限原则