gpt4 book ai didi

security - 严格控制PostgreSQL中的statement_timeout变量

转载 作者:行者123 更新时间:2023-11-29 13:37:41 25 4
gpt4 key购买 nike

有人知道如何限制用户设置变量的能力吗?特别是 statement_timeout?

无论我是改变用户将此变量设置为一分钟,还是在 postgresql.conf 文件中将其设置为一分钟,用户始终只需键入 SET statement_timeount TO 0;完全禁用该 session 的超时。

有人知道阻止这种情况的方法吗?我知道有些变量只能由 super 用户更改,但我不知道是否有办法强制它成为那些受控变量之一。或者,有没有办法撤销 SET 的角色?

在我的应用程序中,此变量用于限制随机用户(用户注册向公众开放)的能力,以防止(接近)无限查询耗尽所有 CPU 时间。如果他们可以禁用它,那么这意味着我必须找到一种新的方法来限制用户的资源。如果没有保护此变量的方法,是否有其他方法可以实现您可能建议的相同目标?

编辑 2011-03-02之所以数据库对外开放,允许任意SQL,是因为这个项目是直接在数据库中玩的游戏。每个玩家都是一个数据库用户。数据被锁定在 View 、规则和触发器后面,CREATE 被从公共(public)和玩家角色中撤消,以防止对模式进行大部分更改,pg_proc 上的 SELECT 被删除以保护游戏敏感函数代码。

这不是我向世界开放的一些关键任务系统。这是一个奇怪的概念证明,它对数据库给予了异常的信任,试图在其中维护整个 CIA 安全三角。

感谢您的帮助,摘要

最佳答案

没有办法覆盖它。如果您允许用户运行任意 SQL 命令,那么更改 statement_timeout 只是冰山一角......如果您不信任您的用户,则不应让他们运行任意 SQL - 或者接受他们可以运行,好吧,任意 SQL。并拥有某种可以取消查询的外部监视器。

关于security - 严格控制PostgreSQL中的statement_timeout变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5158196/

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