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

Ngăn chặn SQL Injection trong mệnh đề ORDER BY

Nếu bạn để giao dịch trong chuỗi, thì danh sách trắng là đặt cược tốt nhất của bạn. Đầu tiên, sortDirection phải khá tầm thường đối với danh sách trắng:so sánh không phân biệt chữ hoa chữ thường với "asc" / "desc" và bạn nên được thiết lập. Đối với những người khác, tùy chọn của tôi sẽ là danh sách trắng đối với các cột đã biết , có lẽ bằng cách chuyển vào Type mong đợi cho dữ liệu và xác thực. Nhưng ở mức tuyệt đối, bạn có thể hạn chế bằng regex để (giả sử) thực thi tất cả chúng đều nghiêm ngặt chữ-số (trong phạm vi a-z, A-Z, 0-9 - có thể gạch dưới nếu cần) - và sau đó thêm [] , tức là

return string.Format("[{0}] {1}", sortColumn, sortDirection);

Nhưng:danh sách trắng nghiêm ngặt gồm các cột đã biết sẽ tốt hơn nhiều, cũng như một bảng chỉ dẫn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nếu Bản ghi Tồn tại, Cập nhật Phụ trang Khác

  2. Cách tạo khóa chính trong SQL Server (Ví dụ T-SQL)

  3. Trả về Phần trăm của Tập hợp Kết quả trong SQL Server

  4. Thứ tự cài đặt / gỡ cài đặt VS 2008 và SQL Server 2008

  5. SQL Server BCP Xuất trong đó dấu phẩy trong trường SQL