Khi sử dụng MySQL để lưu trữ dữ liệu, ta cần cân nhắc khi sử dụng các Storage Engine nào để lưu trữ sao cho hiệu quả, sau đây mình tóm tắt so sánh giữa hai Storage Engine hay được sử dụng là MYISAM và INNODB:
So sánh MYISAM và INNODB:
MYISAM
|
INNODB
| |
Hỗ trợ relationship
|
Không hỗ trợ
|
Hỗ trợ data integrity and foreign key constraints
|
Hỗ trợ transaction
(an toàn giao tác)
|
Không hỗ trợ
|
Hỗ trợ
|
table locking
(dùng trong các hệ thống dùng SELECT là chủ yếu)
|
row-level locking
(dùng trong các hệ thống thực hiện nhiều thao tác INSERT/UPDATE)
| |
Full-text searches
|
Hỗ trợ
|
Không hỗ trợ
|
Tốc độ
|
Cao hơn
|
Chậm hơn
|
Dễ bị crash hơn
|
Dùng cho các hệ thống ngân hàng,… vì đảm bảo an toàn giao tác
|
SQL Injection
Trong MySQL, một vấn đề cần phòng tránh đó là kiểu khai thác tấn công dựa trên lỗi SQL Injection, sau đây là một số cách tối s
Phòng chống lỗi SQL Injection:
- Lỗi này dựa trên sự sơ hở của người lập trình tức là đưa vào các câu lệnh trực tiếp mà ko qua xử lý dẫn đến attacker tiêm vào các câu truy vấn MySQL để thay đổi CSDL.
- Cách phòng chống:
+ Trong file php.ini, ta bật chức năng thêm dấu \ trước các dấu ‘ để đề phòng các câu lệnh mã độc. Thay đổi lệnh:
magic_quotes_gpc = off
thành
magic_quotes_gpc = on
- Bọc dữ liệu nhập vào từ người dùng bằng hàm
mysql_real_escape_string(<dữ liệu>)
0 nhận xét: