Lỗi bảo mật

Không người lập trình nào lại muốn mã nguồn mình viết ra lại đầy lỗi và nhất là lỗi bảo mật. Có một cách để "cải thiện" khả năng lập trình không lỗi: theo dõi lỗi của người đi trước:
- Drupal critical issues
- Drupal security annoucements
- CVS log messages

SQL Injection

Để tránh SQL Injection, chúng ta cần thực hiện những câu query đúng cách. Suwr dụng:

<?php
db_query
(
  
"SELECT foo FROM {table} t WHERE t.name = '%s' "
  
$_GET['user']
);
?>

thay vì
<?php
db_query
(
  
'SELECT foo FROM {table} t WHERE t.name = '$_GET['user']
);
?>

Thử xem đoạn mã sau:

<?php
$keyword 
$_REQUEST['keyword'];
$query "SELECT cust_id, cust_name, cust_email FROM customers WHERE category = '$keyword'";
$result db_query($query);
?>

Trong trường hợp $_REQUEST['keyword'] có giá trị ; DROP TABLE customers; -- , đoạn mã sẽ thực hiện câu truy vấn:

SELECT cust_id, cust_name, cust_email FROM customers WHERE category = ''; DROP TABLE customers; --'

Cross-site Request Forgeries (CSRF)

Tạo và xử lý form phải sử dụng Form API để tránh vấn đề CSRF.

Truy cập file

Thiết lập quyền truy cập file không hợp lý cũng gây nên những lỗ hổng bảo mật hết sức nguy hiểm. Thao khảo lệnh chmod

Cập nhật

  1. Vừa mới thấy "Tìm hiểu và chống lỗi bảo mật trong ứng dụng web " -- Bài viết khá chi tiết về một số lỗi bảo mật thường gặp khi lập trình web.