MySQL存储过程SQL注入
我来自一个Oracle世界,在那里我可以使用DBMS_SQL实现绑定变量数量未知的动态SQL。显然这在MySQL中是不可能的。所以我的问题是如何防止MySQL中的SQL注入?我认为这很容易查找,但我找到的每个示例都是PHP和MySQL。我只处理MySQL存储过程,没有PHP。以下是一个片段:MySQL存储过程SQL注入,mysql,stored-procedures,sql-injection,Mysql,Stored Procedures,Sql Injection,我来自一个Oracle世界,在那里我可以使用DBMS_SQL实现绑定变量数量未知的动态SQL。显然这在MySQL中是不可能的。所以我的问题是如何防止MySQL中的SQL注入?我认为这很容易查找,但我找到的每个示例都是PHP和MySQL。我只处理MySQL存储过程,没有PHP。以下是一个片段: set @sql_string=concat(@sql_string,'col1=''',someRandomText,''' where col2=''',moreRandomText,''';');
set @sql_string=concat(@sql_string,'col1=''',someRandomText,''' where col2=''',moreRandomText,''';');
是否有可以应用于someRandomText
以防止SQL注入()的保护功能
谢谢 SP的
someRandomText
输入来自哪里?它通常在应用层中转义到那里。有一个本机字符串函数可以在某些上下文中使用。数据已经在数据库中。它是保存在临时表中的导入数据。这是导入过程的一部分。当存储过程运行并将数据从暂存表移动到生产表时,我需要保护。本机QUOTE()
string函数可能适合您。在实践中,我认为我从未见过使用它,因为输入通常来自数据库之外。在它进入临时表之前,您是否已经在应用程序层转义了它?我不知道这个函数。非常感谢。我会研究一下。SP的someRandomText
输入来自哪里?它通常在应用层中转义到那里。有一个本机字符串函数可以在某些上下文中使用。数据已经在数据库中。它是保存在临时表中的导入数据。这是导入过程的一部分。当存储过程运行并将数据从暂存表移动到生产表时,我需要保护。本机QUOTE()
string函数可能适合您。在实践中,我认为我从未见过使用它,因为输入通常来自数据库之外。在它进入临时表之前,您是否已经在应用程序层转义了它?我不知道这个函数。非常感谢。我会调查的。