函数是保护数据库的好方法吗?
我正在开发一个网站与Postgresql后端,我希望保护数据库数据&模式。
我已经为所有需要的交互创建了Postgres函数,所以前端不需要SQL。
我只希望用户能够看到函数并能够执行它们。
函数是保护数据库的好方法吗?
一个简单的问题没有简单的答案。
- 如果你想要可移植性:不。它将使移植到其他数据库变得复杂
- 许多现代应用程序只使用CRUD操作:(https://en.wikipedia.org/wiki/Create,_read,_update_and_delete)
- 是的,函数可以添加安全层来保护数据和隐藏复杂性。
我的建议是:为函数使用一个单独的模式,并授权在该模式上执行:
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA myschema TO myuser;