1

我想在我的服务器中执行用户提交的 sql 代码(用于教学目的)。但这可能非常危险。我想知道如果执行 sql 代码(如果有安全的方法来执行此操作)或仅检查用户代码是否与正则表达式匹配并显示符号结果,什么会更好。

4

2 回答 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 回答