Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy vấn cơ sở dữ liệu PHP / SQL thực hành tốt và bảo mật

Câu trả lời của Javier có liên kết owasp là một khởi đầu tốt.

Bạn có thể làm thêm một số việc sau:

  1. Về các cuộc tấn công SQL injection, bạn có thể viết một hàm sẽ xóa các câu lệnh SQL phổ biến khỏi đầu vào như "DROP" hoặc "DELETE * WHERE", như sau:

    * $ sqlarray =array ("DROP", "hoặc 1 =1", "union select", "SELECT * FROM", "select host", "create table", "FROM users", "users WHERE"); *

    Sau đó, viết hàm sẽ kiểm tra đầu vào của bạn so với mảng này. Đảm bảo rằng bất kỳ nội dung nào bên trong $ sqlarray sẽ không phải là thông tin đầu vào thông thường từ người dùng của bạn. (Đừng quên sử dụng strtolower về điều này, cảm ơn lou).

  2. Tôi không chắc liệu memcache có hoạt động với PHP 4 hay không nhưng bạn có thể áp dụng một số biện pháp bảo vệ chống spam với memcache bằng cách chỉ cho phép một IP từ xa nhất định truy cập vào trang process.php X số lần trong khoảng thời gian Y.

  3. Đặc quyền là quan trọng. Nếu bạn chỉ cần đặc quyền chèn (giả sử, xử lý đơn đặt hàng), thì bạn nên đăng nhập vào cơ sở dữ liệu trên trang quy trình đặt hàng với người dùng chỉ có chèn và có thể chọn đặc quyền. Điều này có nghĩa là ngay cả khi một SQL injection được thực hiện, chúng chỉ có thể thực hiện các truy vấn INSERT / SELECT chứ không thể xóa hoặc tái cấu trúc.

  4. Đặt các tệp xử lý php quan trọng trong một thư mục như / include. Sau đó không cho phép tất cả các IP truy cập vào thư mục / include đó.

  5. Đặt MD5 có muối với tác nhân của người dùng + từ xa + muối của bạn trong phiên của người dùng và làm cho nó xác minh trên mỗi lần tải trang rằng MD5 chính xác có trong cookie của họ.

  6. Không cho phép một số tiêu đề nhất định ( http://www.owasp.org/index.php/Testing_for_HTTP_Methods_and_XST ). Không cho phép PUT (Nếu bạn không cần tải lên tệp) / tiêu đề TRACE / CONNECT / DELETE.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách xóa thủ tục đã lưu trữ trong MySQL

  2. Tạo tệp kml từ cơ sở dữ liệu mysql với php

  3. PDO Không thể thực thi các truy vấn trong khi các truy vấn không có bộ đệm khác đang hoạt động

  4. Cập nhật đồng thời MySQL

  5. Mệnh đề WHERE trước INNER JOIN