Mos*_*she 5 mysql database stored-procedures
我知道我正在寻找的可能是一个安全漏洞,但由于我设法在 Oracle 和 SQL Server 中做到了这一点,所以我会尝试一下:
我正在寻找一种从 MySQL 上的 SQL 脚本执行 shell 命令的方法。如有必要,可以创建和使用新的存储过程。
注意:我不是在寻找 mysql 命令行工具提供的 SYSTEM 命令。相反,我正在寻找这样的东西:
开始 IF COND1... EXEC_OS cmd1; 否则 EXEC_OS cmd2; 结尾;
其中 EXEC_OS 是调用我的代码的方法。
您可能需要考虑使用功能更强大的脚本语言编写脚本,例如 Perl、Python、PHP 或 Ruby。所有这些语言都有运行 SQL 查询的库。
存储过程语言中没有用于运行 shell 命令的内置方法。这被认为是一个坏主意,不仅因为它是一个安全漏洞,而且因为 shell 命令的任何效果都不遵守事务隔离或回滚,就像在存储过程中执行的任何 SQL 操作的效果一样:
START TRANSACTION;
CALL MyProcedure();
ROLLBACK;
Run Code Online (Sandbox Code Playgroud)
如果MyProcedure执行了创建或编辑文件、发送电子邮件等操作,这些操作将不会回滚。
我建议在存储过程中执行 SQL 工作,并在调用存储过程的应用程序中执行其他工作。
| 归档时间: |
|
| 查看次数: |
19065 次 |
| 最近记录: |