Как получить последние записи N с activerecord?

Параметрированный запрос И проверка ввода - это путь. Существует множество сценариев, в которых может произойти SQL-инъекция, хотя используется mysql_real_escape_string().

Эти примеры уязвимы для SQL-инъекции:

$offset = isset($_GET['o']) ? $_GET['o'] : 0;
$offset = mysql_real_escape_string($offset);
RunQuery("SELECT userid, username FROM sql_injection_test LIMIT $offset, 10");

или

$order = isset($_GET['o']) ? $_GET['o'] : 'userid';
$order = mysql_real_escape_string($order);
RunQuery("SELECT userid, username FROM sql_injection_test ORDER BY `$order`");

В обоих случаях вы не можете использовать ' для защиты инкапсуляции.

Источник : Непредвиденная инъекция SQL (при эвакуации Недостаточно)

156
задан Arslan Ali 13 March 2015 в 15:35
поделиться

3 ответа

Активный рекордный запрос как это, я думаю, получил бы Вас, что Вы хотите ('Что-то' - имя модели):

Something.find(:all, :order => "id desc", :limit => 5).reverse

редактирование : Как отмечено в комментариях, иначе:

result = Something.find(:all, :order => "id desc", :limit => 5)

while !result.empty?
        puts result.pop
end
140
ответ дан Dan McNevin 23 November 2019 в 21:47
поделиться

Добавьте: параметр порядка к запросу

-4
ответ дан frankodwyer 23 November 2019 в 21:47
поделиться

мы можем использовать Model.last(5) или Model.limit(5).order(id: :desc) в направляющих 5.2

1
ответ дан 23 November 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: