Conversation
|
Выглядит так, что теперь возможен SQL injection произвольной строки через параметр 'order'. Без валидации так нельзя. |
|
@Leonix order_by во первых, разбивается explode'ом, и пересобираеться в $collection->orderBy. |
|
@GrozaZool он прав, достаточно взглянуть на if ($order_by) {
$order_by = preg_replace('/[^\w\s]+/', '', $order_by);
} else {
$order_by = 'name ASC';
} |
|
Допустим, мы предпочтем этот вариант, нежели замечать что в $collection->orderBy оно попадет разбитый explode'ом как 2 элемента. ведь из id DESC; DROP TABLE table остается только id[0] DESC[1]. |
|
Ну, я бы, конечно, предпочёл, чтобы глядя на код было очевидно, что Injection невозможен, потому что аргумент "никто пока не нашёл" - не очень сильный аргумент. |
Исправление сортировки по своим полям.
Без этой правки нельзя сортировать например по id DESC.