我在构建的应用程序的安全性方面遇到问题......它是水晶报表查看器的包装器,可为用户提供一些附加功能。
有许多内部用户能够创建/修改 Crystal Reports。我已经做了一些测试,对于一个如此密切地处理连接到各种数据源的应用程序,它似乎一点也不关心这样做是否安全。没有什么能阻止我修改每个人都信任的现有水晶报告,使其变成恶意和有害的东西。所需要的只是一个带有以下 sql 的添加命令表:
DELETE FROM tbl_Employees; SELECT FROM tbl_Employees;
事实上,您可以在水晶报表中执行用户有权执行的任何操作……只要它以 select 结尾。这引出了我的问题:有什么方法可以确保我的应用程序将与我们的 sql 服务器的任何连接限制为仅选择?我不能临时修改用户凭据,也不能使用单个只读帐户,因为我仍然需要将用户限制为他们的正常权限(即他们可以查询哪些数据库)。
我不是很有希望,因为我所读过的任何内容都没有让我相信我可以以这种方式限制连接。
另一方面,如果他们愿意,大多数制作报告的人可以采取更直接的方法来破坏我们的数据……但我认为这是一个很好的借口,不尽我所能确保我的应用程序尽可能安全。我似乎无法找到任何可行的答案。