我目前正在 Ballerina 中处理参数化查询。
int id = 10;
int age = 12;
sql:ParameterizedQuery query = `SELECT * FROM students WHERE id < ${id} AND age > ${age}`;
我想确保我的应用程序的安全。我想知道在使用参数化查询时是否有必要清理这些查询的所有输入作为额外的安全层。
在调用特定数据库的数据库驱动程序之前,SQL 库中的参数化查询会被 SQL 库转换为准备好的语句。据我所知,从参数化查询到准备好的 SQL 语句的转换是在 JBallerina[1][2][3] 中为 MySQL 完成的。这对于其他实现可能有所不同。因此,对于 MySQL,我想说你真的不必担心使用正确形成的参数化查询的 SQL 注入攻击。
[1] - https://github.com/ballerina-platform/module-ballerinax-mysql/blob/master/ballerina/client.bal#L59