Thanks for the suggestion Even. But there's really no danger for SQL injections. The plugin simply reads and writes values to a local geopackage. There's no user input or user form involved. And even if there was, a user would simply destroy it's own gpkg, which can easier be done by simply deleting it in the file browser.

I fixed it by using the `# nosec` comment behind all the lines with SQL strings. Feels a bit strange though to "fix" things that are not bad or broken at all.

Kind regards,
Raymond


On 6/17/26 18:48, Even Rouault wrote:

Le 17/06/2026 à 18:40, Raymond Nijssen via QGIS-Developer a écrit :
Hi, I'm having this security issue with Bandit and cannot publish my plugin. But the executeSql() does not take separate parameters. What would be the proper solution here?


Possible SQL injection vector through string-based query construction.
104             q = f'DELETE FROM imaer_metadata WHERE key = \'{key}\';'
105             self.conn.executeSql(q)


Maybe instead of key, use escaped_key = key.replace("'", "''") (ie replacing single quote by single quote repeated twice)

That should be enough to avoid SQL injection, but no idea if Bandit will be smart enough to recognize this

Some DB backends might have different escaping rules than the above standard SQL92 one, so it might be tricky to do that safely against an arbitrary backend.


_______________________________________________
QGIS-Developer mailing list
[email protected]
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to