这是否阻止Drupal中的SQL注入?Drupal中的SQL注入
db_query('INSERT INTO {tablename} (field1, field2) VALUES ("%s", "%s")', $field1, $field2);
这是否阻止Drupal中的SQL注入?Drupal中的SQL注入
db_query('INSERT INTO {tablename} (field1, field2) VALUES ("%s", "%s")', $field1, $field2);
是你的问题“这是我需要做的,以阻止Drupal中的SQL注入吗?”
答案是“几乎,但不完全。”
db_query("INSERT INTO {tablename} (field1, field2) VALUES ('%s', '%s')",
$field1, $field2);
单引号对于SQL中的引用值更为标准。或者,如果您已经通过hook_schema定义了tablename表,则可以使用drupal_write_record来代替,如其他答案所述。 drupal_write_record的好处是,你不必应付任何SQL,你只是这样做:
$tablename = array('field1' => $field1, 'field2' => $field2);
drupal_write_record('tablename', $tablename);
感谢您的建议您的意思是'$ field1 $ field2'可以是原始的$ POST数据根本不会被消毒吗?是否正常?Drupal会采取关心它的一切吗? – jblue 2010-09-07 18:52:13
它们可以是原始的$ _POST数据,是的,我建议使用form api,然后允许你从$ form_state ['values']中取出数据,但是drupal的代码将处理任何如果这些值是固定长度的char/varchar字段,我建议在插入之前检查字符串长度,因为这是一个很好的习惯。 – 2010-09-08 16:12:19
您可以使用参数as described in the documentation。
但是,您应该调用drupal_write_record
function来代替。
我强烈建议使用drupal_write_record()函数而不是SQL指令,SLaks前指出。
完全没有。 – SLaks 2010-09-06 22:07:40
AAAAAAH,而不是我想要的答案。还有什么? :( – jblue 2010-09-06 22:18:08
不是很清楚你在问什么 – 2010-09-06 22:26:14