向黑客专业人士提出的问题。
我检查了很多类似的问题和 PHP 手册文档以及 W3SCHOOLS,它们都使用不同的方法,我对所有可能的方法都感到疯狂(不确定使用哪一种?)
(例如 PHP 手册使用绑定(bind)参数函数:
$stmt->bind_param('sssd', $code, $language, $official, $percent);
但我无法让它工作,所以我使用了这个:
$queryString = "SELECT * FROM mytable WHERE dom='%s' AND key='%s' AND user_id='%i";
$stmt = $wpdb->get_results( $wpdb->prepare($queryString, $dom, $key, $user_id) );
(我假设 %i 是整数,%s 是字符串)-此代码可以工作,但不确定它是否可以防止 SQL 注入(inject)。
这是否正确并且足以防止 SQL 注入(inject)? (ps 变量通常在此之前创建,例如 $dom = "mydom";)
非常感谢!
最佳答案
在您的示例中,我看到您正在使用 Wordpress 函数,因此按照该路线,您应该查阅文档以了解您正在做什么,特别是 prepare()
https://developer.wordpress.org/reference/classes/wpdb/prepare/
其中指出“准备 SQL 查询以安全执行...”
所以本质上是的,你正在保护你的查询,尽管你相信 Wordpress 在内部正确地执行了它。
关于php - 这是防止 SQL 注入(inject)的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51229796/