merge from yiisoft/yii2

This commit is contained in:
cuileon
2018-11-14 11:57:32 +08:00
parent 47df8a8cc0
commit 489dd119a5
426 changed files with 18465 additions and 4215 deletions

View File

@ -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 нет!
```