我想更好地保护我的数据库,因为如果有人反编译了我的程序,他将获得我的sql uid 和密码,并可以利用它们窃取我的数据。如何仅当 sql 语句中有 WHERE 或 LIKE 时,才能向我用于我的程序的 sql 用户授予 SELECT 和 UPDATE 权限?因为如果有人发现了这个用户,他就可以偷走我的整张 table 。谢谢。
这是允许的: SELECT * FROM table WHERE username = 'username'
这是不允许的: 从表中选择 *
最佳答案
使用 Database View 的优势之一数据库 View 有助于限制特定用户的数据访问。您可能不希望所有用户都可以查询敏感数据的子集。您可以使用数据库 View 仅向特定用户组公开非敏感数据。
因此,理论上,您可以尝试类似的方法
CREATE VIEW user_username AS SELECT * FROM table WHERE username = 'username'
以便为您的应用程序的每个用户创建单独的 View 。
话虽如此,这样做是一个非常糟糕的主意。此外,如果通过反编译,用户可以访问包含所有用户的数据库,我很确定应用程序的设计一定有问题。
但是,由于有关应用程序的详细信息很少,因此很难就应该如何完成提出建议。
关于MySql 只授予读取某些内容而不是整个表的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46628954/