这是防止 SQL 注入的正确方法吗?
Is this correct way to prevent SQL injection?
黑客专业人士的问题。
我检查了很多类似的问题和 PHP 手册文档以及 W3SCHOOLS,它们都使用不同的方法,我对所有可能的方法都感到疯狂(不确定使用哪一种?)
(例如PHP 手动使用绑定参数函数:
$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 注入。
这是否正确并且足以防止 SQL 注入?
(ps 变量通常在此之前创建,例如 $dom = "mydom";)
非常感谢!
在你的示例中,我看到你正在使用 Wordpress 函数,所以你应该参考文档了解你在做什么,特别是 prepare()
https://developer.wordpress.org/reference/classes/wpdb/prepare/
其中说明 "Prepares a SQL query for safe execution..."
所以基本上是的,你是在保护你的查询,尽管是通过相信 Wordpress 在内部正确地执行它。
黑客专业人士的问题。
我检查了很多类似的问题和 PHP 手册文档以及 W3SCHOOLS,它们都使用不同的方法,我对所有可能的方法都感到疯狂(不确定使用哪一种?)
(例如PHP 手动使用绑定参数函数:
$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 注入。
这是否正确并且足以防止 SQL 注入? (ps 变量通常在此之前创建,例如 $dom = "mydom";)
非常感谢!
在你的示例中,我看到你正在使用 Wordpress 函数,所以你应该参考文档了解你在做什么,特别是 prepare()
https://developer.wordpress.org/reference/classes/wpdb/prepare/
其中说明 "Prepares a SQL query for safe execution..."
所以基本上是的,你是在保护你的查询,尽管是通过相信 Wordpress 在内部正确地执行它。