Вордпресс $wpdb->запрос строк


Глядя на $wpdb класс, я нашла get_row, и я не уверен, если эта функция автоматически готовит запрос. Я считаю, что это не так и мне придется пересмотреть мой код, чтобы предотвратить будущие катастрофы.

Вот что мой код выглядит, и я чувствую, что он уязвим:

$wpdb->get_row("SELECT * FROM `my_table` WHERE column = '".$_GET['fromUrl']."'", ARRAY_A);

Однако, я пробовал впрыскивать вредоносных входного сигнала с последующей: или столбца = 'значение'

И, кажется, не работать, я должен идти вперед и в любом случае подготовить моих высказываниях?



186
2
задан 4 августа 2011 в 08:08 Источник Поделиться
Комментарии
1 ответ

Да, вы должны подготовить заявление или хотя бы SQL побег значение переменная$_GET['fromUrl']. Это хорошая практика, чтобы быть параноиком о любых входных потенциально предоставленной пользователем, как это будет неправильно в какой-то момент.

В wpdb-ссылка говорит:


Кратко, хотя все данные в SQL-запросы должны быть SQL-сбежал
прежде чем SQL-запрос выполняется, чтобы предотвратить SQL-инъекции
атак.

Подготовленный запрос будет выглядеть примерно так

$wpdb->get_row(
$wpdb->prepare("SELECT * FROM `my_table` WHERE column = %s",
$_GET['fromUrl']),
ARRAY_A);

что на мой взгляд является более удобным для чтения, особенно SQL-запрос будет легче следовать.

Кроме того, проверки пользовательского ввода может позволить вам предоставить пользователю лучший опыт, создавая значимые уведомления, описывая, что произошло и каким образом пользователь может справиться с неудобства.

2
ответ дан 4 августа 2011 в 10:08 Источник Поделиться