Binding Parameters

Một phần của tài liệu TÌM HIỂU HỆ THỐNG ĐỊNH VỊ GPS XÂY DỰNG HỆ THỐNG WEB – MOBILE ỨNG DỤNG CHO LĨNH VỰC DU LỊCH (Trang 26)

Để trânh câc tấn công SQL Injection vă cải thiện hiệu suất câc cđu lệnh truy vấn SQL ta sử dụng câc tham số răng buộc (binding parameters). Xem ví dụ sau:

// an SQL with two placeholders ":username" and ":email"

$sql="INSERT INTO tbl_user (username, email) VALUES(:username,:email)";

$command=$connection->createCommand($sql);

// replace the placeholder ":username" with the actual username value

$command->bindParam(":username",$username,PDO::PARAM_STR);

// replace the placeholder ":email" with the actual email value

$command->bindParam(":email",$email,PDO::PARAM_STR); $command->execute();

// insert another row with a new set of parameters

$command->bindParam(":username",$username2,PDO::PARAM_STR); $command->bindParam(":email",$email2,PDO::PARAM_STR);

$command->execute()

Để biết chi tiết câc tham số răng buộc, vui lòng xem thím ở link

IV.11.2 Query Builder

Yii Query Builder cung cấp việc viết câc cđu lệnh SQL theo hướng đối tượng. Nó cho phĩp sử dụng câc phương thức vă thuộc tính để chia nhỏ cđu lệnh SQL thănh câc phần đơn giản hơn. Câc phần đó sau đó được Yii kết hợp lại vă thực thi thông qua DAO. Dưới đđy lă một câch sử dụng điển hình của Query Builder để xđy dựng cđu lệnh SQL SELECT

$user = Yii::app()->db->createCommand() ->select('id, username, profile') ->from('tbl_user u')

->join('tbl_profile p', 'u.id=p.user_id')

->where('id=:id', array(':id'=>$id))

->queryRow();

Việc sử dụng Query Builder có câc lợi ích sau:

• Cho phĩp xđy dựng câc cđu lệnh truy vấn phức tạp (nhưng dễ viết hơn)

• Tự động bọc (quote) câc tín table bằng câch thím câc ký tự (`) văo tín table nhằm trânh xung đột với câc từ khóa của SQL vă câc ký tự đặc biệt

• Tự động bọc câc giâ trị tham số vă sử dụng câc tham số răng buộc (parameter binding) khi có thể, giảm nguy cơ bị tấn công bằng SQL Injection

• Đơn giản hóa việc chuyển đổi sang câc nền tảng DB khâc nhau

Trước khi sử dụng Query Builder, ta kết nối đến CSDL bằng câch sử dụng CDbCommand như DAO.

$command = Yii::app()->db->createCommand();

Một phần của tài liệu TÌM HIỂU HỆ THỐNG ĐỊNH VỊ GPS XÂY DỰNG HỆ THỐNG WEB – MOBILE ỨNG DỤNG CHO LĨNH VỰC DU LỊCH (Trang 26)

Tải bản đầy đủ (DOCX)

(93 trang)
w