mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-02 13:02:24 +08:00
merge from yiisoft/yii2
This commit is contained in:
@ -137,7 +137,7 @@ $query->from('public.user u, public.post p');
|
||||
$query->from(['u' => 'public.user', 'p' => 'public.post']);
|
||||
```
|
||||
|
||||
Кроме имён таблиц, вы можете, также, как и в select, указывать подзапросы в виде объекта [[yii\db\Query]].
|
||||
Кроме имён таблиц, вы можете так же, как и в select, указывать подзапросы в виде объекта [[yii\db\Query]].
|
||||
|
||||
```php
|
||||
$subQuery = (new Query())->select('id')->from('user')->where('status=1');
|
||||
@ -217,7 +217,7 @@ $query->where(['id' => $userQuery]);
|
||||
|
||||
Используя формат массива, Yii автоматически привязывает значения массива как параметры, потому в отличие от [строкового формата](#string-format),
|
||||
привязывать параметры вручную не требуется. Обратите внимание, что Yii никогда НЕ экранирует имена столбцов (ключи массива),
|
||||
потому если вы используете как ключ массива переменню, полученную от пользователя без дополнительной проверки, ваше приложение
|
||||
потому если вы используете как ключ массива переменную, полученную от пользователя без дополнительной проверки, ваше приложение
|
||||
становится подверженным атаке через SQL инъекцию. Чтобы избежать этого, используйте для имён столбцов только проверененные данные,
|
||||
предпочитая фильтрацию по «белому списку». Если вам нужно использовать имя столбца, полученное от пользователя,
|
||||
вам может быть полезным раздел [Фильтрация данных](output-data-widgets.md#filtering-data). Ниже приведён пример уязвимого кода:
|
||||
@ -225,7 +225,7 @@ $query->where(['id' => $userQuery]);
|
||||
```php
|
||||
// Уязвимый код:
|
||||
$column = $request->get('column');
|
||||
$value = $request->get('value);
|
||||
$value = $request->get('value');
|
||||
$query->where([$column => $value]);
|
||||
// $value будет безопасно привязано как параметр, но $column – нет!
|
||||
```
|
||||
@ -295,9 +295,9 @@ $query->where([$column => $value]);
|
||||
- `>`, `<=`, или другие валидные операторы БД, которые требуют двух операндов: первый операнд должен быть именем
|
||||
столбца, второй операнд это значение. Например, `['>', 'age', 10]` сформирует `age>10`.
|
||||
|
||||
Используя формат операторов, Yii автоматически призяывает значения для сравнения как параметры, потому в отличие от [строкового формата](#string-format),
|
||||
Используя формат операторов, Yii автоматически привязывает значения для сравнения как параметры, потому в отличие от [строкового формата](#string-format),
|
||||
привязывать параметры вручную не требуется. Обратите внимание, что Yii никогда НЕ экранирует имена столбцов,
|
||||
потому если вы используете как имя столбца переменню, полученную от пользователя без дополнительной проверки, ваше приложение
|
||||
потому если вы используете как имя столбца переменную, полученную от пользователя без дополнительной проверки, ваше приложение
|
||||
становится подверженным атаке через SQL инъекцию. Чтобы избежать этого, используйте для имён столбцов только проверененные данные,
|
||||
предпочитая фильтрацию по «белому списку». Если вам нужно использовать имя столбца, полученное от пользователя,
|
||||
вам может быть полезным раздел [Фильтрация данных](output-data-widgets.md#filtering-data). Ниже приведён пример уязвимого кода:
|
||||
@ -305,7 +305,7 @@ $query->where([$column => $value]);
|
||||
```php
|
||||
// Уязвимый код:
|
||||
$column = $request->get('column');
|
||||
$value = $request->get('value);
|
||||
$value = $request->get('value');
|
||||
$query->where(['=', $column, $value]);
|
||||
// $value будет безопасно привязано как параметр, но $column – нет!
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user