使用函数保护数据库



函数是保护数据库的好方法吗?

我正在开发一个网站与Postgresql后端,我希望保护数据库数据&模式。

我已经为所有需要的交互创建了Postgres函数,所以前端不需要SQL。

我只希望用户能够看到函数并能够执行它们。

函数是保护数据库的好方法吗?

一个简单的问题没有简单的答案。

  • 如果你想要可移植性:不。它将使移植到其他数据库变得复杂
  • 许多现代应用程序只使用CRUD操作:(https://en.wikipedia.org/wiki/Create,_read,_update_and_delete)
  • 是的,函数可以添加安全层来保护数据和隐藏复杂性。

我的建议是:为函数使用一个单独的模式,并授权在该模式上执行:

GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA myschema TO myuser;