【问题标题】:Alternatives to stored procedures?存储过程的替代品?
【发布时间】:2018-11-15 13:57:58
【问题描述】:

托管我的网站的服务器无法升级到更新版本的 MySQL(版本 5 左右),并且由于安全问题,托管公司已禁用(在我创建了许多之后)存储过程。

DELIMITER ;;
CREATE DEFINER=`blahblahblah`@`xx.xx.xx.%` PROCEDURE `get_bindings_chart`(IN in_layout_id TINYINT(3), IN in_game_id SMALLINT(5))
BEGIN
    SELECT  b.normal_group, b.normal_action, b.shift_group, b.shift_action, b.ctrl_group, b.ctrl_action, b.alt_group, b.alt_action, b.altgr_group, b.altgr_action, b.extra_group, b.extra_action, b.image_file, b.key_number
    FROM    bindings as b
    WHERE   b.layout_id = in_layout_id
    AND     b.game_id = in_game_id;
END ;;

我可以使用哪些存储过程的替代品?我的网站主要是 PHP。 PHP 替代品是否存在安全风险?谢谢。

【问题讨论】:

  • 使用 python 或 nodejs。在数据仓库中,通常采用这种方式来代替过程的使用。
  • 更改您的托管服务提供商。

标签: php mysql stored-procedures


【解决方案1】:

没有语言可以证明安全问题。安全问题是开发者的责任。

另一种看待它的方式是,您可以用任何语言(包括 MySQL 存储过程)编写不安全的应用程序,同样您也可以用任何语言编写安全的应用程序。

关于在 PHP 代码中编写安全 SQL,您应该阅读:

这些应该可以帮助您了解 SQL 编程中最常见的安全错误。

我很少在 MySQL 中使用存储过程,不是因为它们不安全(正如我所说,安全性不是由开发人员决定的),而是因为 MySQL 存储过程很难编写。没有调试器,没有包支持,没有编译器,而且用它编写代码是一种笨拙的语言。任何可以使用存储过程的任务,我都可以用 PHP、Python 或 Ruby 等脚本语言更轻松地编写。

【讨论】:

  • 他们并没有因为语言问题而禁用存储过程,而是因为 MySQL 5“在根级别区域存储过程和触发器”。他们也没有在我的服务器上升级 MySQL(假设可以解决问题)的计划。
  • 我是否需要访问控制台才能运行 Python 或 Ruby?我所拥有的只是 FTP 访问 AFAIK。
  • 我检查了一下,我的计划中有 Python、Perl 和 Ruby 访问权限。 webhostingpad.com/hosting 不过不知道从哪里开始。
  • 您不需要控制台访问权限或 root 权限。通常,您在个人计算机/笔记本电脑上开发和测试您的代码,然后使用 FTP 上传它,假设它在托管站点上也能正常工作。
  • @posfan12,我不会在那个托管服务提供商那里浪费时间。
【解决方案2】:

正如我所见,由于托管限制,唯一的选择是将这个程序转换为 PHP 函数。 但是,您可能不会有相同的性能。 您应该考虑搬到另一家托管公司。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-23
    • 2023-04-04
    • 2015-06-19
    • 1970-01-01
    • 2022-09-28
    • 2021-10-03
    • 1970-01-01
    相关资源
    最近更新 更多