我想在我的服务器中执行用户提交的 sql 代码(用于教学目的)。但这可能非常危险。我想知道如果执行 sql 代码(如果有安全的方法来执行此操作)或仅检查用户代码是否与正则表达式匹配并显示符号结果,什么会更好。
问问题
87 次
2 回答
2
您可以做的最简单和最基本的事情是首先限制网页使用的帐户。
仅授予特定帐户对特定数据库执行特定操作的权限。禁用所有磁盘 I/O 和其他类似功能。
但是,要定义,您必须允许一些插入、创建、删除、更新语句。
另外三个选项:
创建一个完整的 webapp
此外,如果可能的话,我会给每个用户自己的帐户,该帐户是从所有其余模式中沙盒化的。
您可以创建一个 Web 应用程序:
- 管理用户帐户(注册等)。
- 为每个用户创建单独的数据库。
- 管理在他们自己的模式中对每个用户进行沙箱处理的权限。
- 提供运行查询的环境。
为他们提供访问 PHP My Admin 的权限
让您的学生访问 PHPMyAdmin,但无需管理员密码。每个学生都有自己的用户名,并以特定权限访问自己的数据库。
限制用户仅使用 Select
如果您教授一些基本的选择语句和连接,您可以只授予 Web 界面使用的特定帐户的权限。
于 2013-05-21T17:55:05.647 回答
0
我永远不会在我的数据库上执行来自用户的任意代码,除非它是一个只被视为沙箱的数据库——没有“真实”数据、表等任何东西。我假设它会不断被倾倒和d。不过,只要满足了这一点,我看不到您将如何获得与实际教学一样现实的教学结果。
于 2013-05-21T17:53:53.567 回答