13/3/15

Một vài vấn đề cần lưu ý về MySQL với PHP

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: