我正在使用MySQL和PHP进行一个项目的开发。我为不同的功能创建了单独的用户(一个用于运行选择查询,一个用于运行更新查询等),以提供额外的安全层。这样,我认为如果有人试图进行注入攻击(尽管我正在使用预处理语句,这是不太可能的),他们所能做的将仅限于原本应该运行的查询类型。这种做法是否值得推荐?
我正在使用MySQL和PHP进行一个项目的开发。我为不同的功能创建了单独的用户(一个用于运行选择查询,一个用于运行更新查询等),以提供额外的安全层。这样,我认为如果有人试图进行注入攻击(尽管我正在使用预处理语句,这是不太可能的),他们所能做的将仅限于原本应该运行的查询类型。这种做法是否值得推荐?
除了扩展逻辑外,您还将在该领域拥有不同的连接和必要的开销。
我认为明智的做法是不要使用根用户在Web应用程序中执行所有查询,如果数据非常重要,则确保指定的用户没有DROP、DELETE等权限。如果需要,在应用程序中可以实现软删除。
最后,请确保对所有GPC进行净化,并确保在查询中正确引用/转义文件。使用预处理语句可能是一件事,但最终可以像使用mysql_real_escape_string()或您的DBAL/ORM提供的任何引用方法一样简单。
个人认为这并不值得麻烦,因为编码、测试和部署都更加棘手。相反,确保您的软件免受 SQL 注入攻击。