Каков наилучший способ для дезинфекции данных?
Я прочитал несколько тем об этом, и у разных людей разные взгляды на лучшую практику.
Что касается WordPress, как я могу безопасно записывать данные в базу данных?
Это одна вставка, которую я использую сейчас:
$result = $wpdb->insert(
$table_name ,
array(
'arena' => $galleryData['arena'],
'year' => substr( $galleryData['season'], 2 ),
'copyright' => $galleryData['copyright'],
'description' => $galleryData['description'],
'path' => $galleryData['path'],
'fk_brand_id' => $galleryData['brand']
),
array( '%s', '%d', '%s', '%s', '%s', '%d' )
);
Другим способом вставки данных является следующее:
$sanitized_sql = $wpdb->prepare( "
INSERT INTO my_plugin_table
SET
field1 = %1$d,
field2 = %2$s,
field3 = %3$s’,
32,
'Aaron Brazell',
'Washington, D.C'
" );
$wpdb->query( $sanitized_sql );
Должен ли я все еще нуждаться в дезинфекции данных с помощью wp_kses()
или mysql_real_escape_string()
Я просто смущен тем, какой метод лучше для безопасной записи данных в базу данных. Я нашел полезный ответ на Переполнение стека .
Так что я должен или не должен дезактивировать данные перед входом?
2 ответа
Нет, санитария уже выполнена. Ну, mysql_real_escape_string , считается неправильной формой для фильтрации html на входе. Я лично думаю, что это делать на выходе, вроде бы DRY. Если вы делали это в WordPress, я очень подозреваю, что где-то еще это сделает снова, что приведет к двойному кодированию сущностей html.
Также, кстати, wpdb :: insert - это просто оболочка для wpdb :: prepare.
Обратите внимание, что безопасное хранение данных отличается от безопасных данных . Например, код JavaScript может быть абсолютно безвредным в контексте безопасности базы данных, но кошмар в контексте front-end.
Нет единого подхода, поэтому WordPress имеет огромное количество связанных функций .
Вы должны учитывать:
- Какие данные.
- Где он исходит.
- Как это будет использоваться.