SQL 注入 (SQL Injection) 是一种通过在用户输入字段中嵌入恶意 SQL 代码来操纵后端数据库的攻击手法。如果应用程序直接将用户输入拼接到 SQL 查询中而不进行适当的转义或参数化,攻击者可以执行任意 SQL 命令,读取、修改或删除数据库中的数据。
SQL 注入是 OWASP Top 10 中最危险的 Web 安全漏洞之一。成功的 SQL 注入攻击可能导致数据泄露、数据篡改、身份冒充、甚至完全控制数据库服务器。欢迎参阅在 Amazon 搜索数据库安全书籍。
在 URL 缩短服务中,SQL 注入风险存在于所有涉及数据库查询的环节:查找短代码对应的目标 URL、创建新的短链接、以及查询点击统计数据。使用参数化查询或 ORM 是防范 SQL 注入的最有效方法。
现代的 NoSQL 数据库 (如 DynamoDB) 虽然不使用 SQL,但也存在类似的注入风险 (NoSQL 注入)。无论使用何种数据库,对用户输入的严格验证和参数化查询都是必不可少的安全措施。在 Amazon 搜索安全编码书籍详细讨论了这些防护技术。