gpt4 book ai didi

postgresql - SQL注入(inject)和Postgres "CREATE SCHEMA"

转载 作者:行者123 更新时间:2023-11-29 12:01:14 24 4
gpt4 key购买 nike

在 postgres 中使用 CREATE SCHEMA schema_name 时,如果需要用户输入,如何防止 SQL 注入(inject) schema_name 参数?

schema_name 不能是带引号的值,因此例如 ActiveRecord::Base.sanitize() 将不起作用。 (如果您使用导轨)。

最佳答案

我知道这可能不是您正在寻找的答案,但如果您的设计让用户决定您的架构名称,但您不信任您的用户,那么您确实需要重新设计。让您的用户决定模式名称类似于要求用户决定类和函数名称。

如果您真的非常想这样做,我会使用正则表达式限制为仅 16 个字母数字字符,以字母字符开头,在强制小写后 (/^[a-z][a-z0- 9]{1,15}$/)。您还需要明确过滤掉“public”作为架构名称、information_schema(如果您还允许使用下划线)和其他内置架构名称。

再一次,我愿意打赌你真的不想这样做,而且有更好的方法来解决你的根本问题。

关于postgresql - SQL注入(inject)和Postgres "CREATE SCHEMA",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5958631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com