我们希望创建一个只读查询 API 端点,允许客户端通过发送原始 SQL 字符串来访问其数据。我们会将查询解析为 AST,并根据我们的受限模式验证它们,本质上只允许简化的 Select 语句,不允许多个查询/子查询等。这可能会引起什么安全问题?
强调,不。
SQL 太强大了。即使您解析查询并认为您已经涵盖了所有基础,聪明的攻击者也会找到一个可以避开您的防御并导致数据库瘫痪(或更糟)的语句。