确保 SQL查询不会改变数据库的数据的最佳方法是什么?
在我的方案中,您无权访问数据库层,只能在应用程序层上执行此逻辑。
你会推荐使用gem,一个ruby自定义脚本吗?
答案 0 :(得分:3)
您可以管理用户的权限,以便他们有权读取数据库,但他们无权更改数据库(即无法插入,更新和删除)。例如,如果您使用的是mysql,则可以在phpmyadmin或同等工具中轻松完成此操作。
根据您的更改更新。即使您只能通过应用程序访问,您仍然以具有或不具有更新,删除,插入或选择权限的用户身份连接到数据库,因此确保不执行此类查询的唯一方法是更改该用户的权限。
答案 1 :(得分:2)
一种简单但非常简单的方法是使用不能在查询中的单词黑名单,例如插入,更新等。 或者,您可以在sql查询上使用解析器,该解析器将为您提供必要的信息,以获取是否允许查询。 我会将选项1作为最后的手段,或者如果您的检查需求相对简单。
答案 2 :(得分:1)
在数据库层,确保Rails应用程序的用户正在访问数据库,因为它只具有您想要的访问权限,可能只有SELECT。
答案 3 :(得分:0)
Sequel支持read only slave databases可写主数据库。只读从站处理SELECT
查询,其他查询由主数据库完成。
也许你可以将master数据库设置为nil?
另一种方法可能是使用hooks(before_save
)来阻止写入数据库。