erlang:如何保护数据库免受json字段内的SQL注入

jaql4c8m  于 2022-12-16  发布在  Erlang
关注(0)|答案(2)|浏览(95)

我使用的是epgsql(https://github.com/epgsql/epgsql)lib,它允许编写如下查询:

"INSERT INTO my_table"
  "(item_id, json_data) "
  "VALUES ($1, $2) "
  "ON CONFLICT "
  "DO NOTHING "
  "RETURNING *;",

然后用不同的参数调用这样的查询。一般来说,我们期望传入的数据范围很广,没有任何预定义的格式。我们唯一期望的是它是以下格式的JSON:{"field_name": "long value from the user with a potential injection of the SQL code I need to be protected from"}
我的问题是如何保护查询不受坏消息的影响。例如,有人输入了类似; DROP table ... ---或类似的内容?

ygya80vv

ygya80vv1#

在为DB查询提供服务的情况下,很难进行调用清理。
我脑子里只有一个选择:
将输入的命令规范化为大写,删除双空格,将命令拆分为“;“-lines等,然后您可以潜在地对文本进行字典搜索,如“DROP TABLE...”或“DELETE FROM...”,以将命令标记为危险命令并阻止执行,也可以提供其他情况,但这会创建要维护的知识库。

slsn1g29

slsn1g292#

考虑到其他语言的实现,我认为你必须自己写。

相关问题