在 Ballerina SQL 中是否也应该考虑输入清理?

Should input sanitisation also be considered in Ballerina SQL?

提问人:Mindula 提问时间:9/12/2023 最后编辑:ShadowMindula 更新时间:9/12/2023 访问量:114

问:

我目前正在 Ballerina 中使用参数化查询。

int id = 10;
int age = 12;
sql:ParameterizedQuery query = `SELECT * FROM students WHERE id < ${id} AND age > ${age}`;

我想确保我的应用程序的安全性。我想知道在使用参数化查询时是否有必要清理这些查询的所有输入,作为额外的安全层。

mysql sql 注入 ballerina

评论


答:

2赞 Dhananjaya 9/12/2023 #1

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

[2] - https://github.com/ballerina-platform/module-ballerinax-mysql/blob/master/native/src/main/java/io/ballerina/stdlib/mysql/nativeimpl/QueryProcessor.java#L37

[3] - https://github.com/ballerina-platform/module-ballerina-sql/blob/master/native/src/main/java/io/ballerina/stdlib/sql/nativeimpl/QueryProcessor.java#L80