繁体   English   中英

在PHP中防止高级MySQL存储过程语句中的注入

[英]protecting against injection in an advanced MySQL stored procedure statement in PHP

我正在使用传递到存储过程中的XML字符串将数据存储到数据库中。

通常,我使用PDO创建准备好的语句,以避免通过bindParam()bindValue()进行SQL injection ,然后execute() 但是,为了优化数据库,我决定实现一个存储过程,该过程吸收大量XML数据并一次完成所有编写工作。

存储过程将使用迭代器遍历XML并将行插入数据库。

使用使用XPath表示法的ExtractValue ,我可以执行以下操作:

CREATE DEFINER=`$DBU`@`%` PROCEDURE `write_comment_rows`(In xml_string text) 
BEGIN
    insert into my_table (comment) values (
        ExtractValue(xml_string, 'user_data/comment_field') 
    );
END;

如何确保存储在comment_field XML数据可以安全地放入数据库中?

我认为这种方法没有优化。 基于PHP的解析,然后在事务中包装了一系列准备好的插入,将很快发展起来。

无论如何,在程序中可以使用内联的准备好的语句

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM