Cara Aman Mendapatkan data dari POST/GET pada Yii2

15 May 2020

Yii2 menyertakan fungsi-fungsi yang biasa sering kita gunakan secara lengkap dan aman, biasanya kita sering menggunakan fungsi $_GET['nama_var'] dan $_POST['nama_var'] untuk mendapatkan data dari user yang dikirim melalui post/get. namun cara tersebut kurang aman karena tidak adanya nilai default jika variabelnya kosong.

Contoh:

$id = $_GET['id'];
$query = "SELECT * FROM user WHERE id = $id";

Agar variabel $id lebih aman maka gunakan fungsi get atau post yang terdapat pada class yii\web\Request yang secara global terdapat pada Yii::$app->request.

$id = Yii::$app->request->get('id', 0);
// Atau bisa ditambahkan kondisi untuk memeriksa variabel id
// if ((int)$id < 1) {
//     throw new \yii\web\HttpException(403, 'ID tidak benar');
// }
$query = "SELECT * FROM user WHERE id = $id";

Untuk query-nya agar lebih aman biasakan pakai punyanya Yii2 yaitu class yii\db\Command atau yii\db\Query karena minim kemungkinan terkena SQLInjection.

$id = Yii::$app->request->get('id', 0);
$result = Yii::$app->db
    ->createCommand('SELECT * FROM user WHERE id = :id', [':id' => $id])
    ->queryOne();

Untuk variabel $_POST juga sama dengan get, tinggal ganti fungsi get dengan post.

$id = Yii::$app->request->post('id', 0);

Demikian semoga dapat bermanfaat dan terima kasih sudah mampir ke blog saya ini.

Sekian.