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

Thuật toán để tránh SQL injection trên MSSQL Server từ mã C #?

Không cần thuật toán - chỉ cần không sử dụng nối chuỗi để xây dựng các câu lệnh SQL. Thay vào đó, hãy sử dụng bộ sưu tập SqlCommand.Parameters. Điều này thực hiện tất cả các giá trị thoát cần thiết (chẳng hạn như thay thế ' với '' ) và đảm bảo rằng lệnh sẽ an toàn vì ai đó khác (tức là Microsoft) đã thực hiện tất cả các thử nghiệm.

ví dụ. gọi một thủ tục được lưu trữ:

using (var connection = new SqlConnection("..."))
using (var command = new SqlCommand("MySprocName", connection))
{
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.AddWithValue("@Param1", param1Value);
    return command.ExecuteReader();
}

Kỹ thuật này cũng hoạt động đối với các câu lệnh SQL nội dòng, ví dụ:

var sql = "SELECT * FROM MyTable WHERE MyColumn = @Param1";
using (var connection = new SqlConnection("..."))
using (var command = new SqlCommand(sql, connection))
{
    command.Parameters.AddWithValue("@Param1", param1Value);
    return command.ExecuteReader();
}


  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 khôi phục cơ sở dữ liệu từ C #

  2. Chuyển đổi ‘datetimeoffset’ thành ‘date’ trong SQL Server (Ví dụ T-SQL)

  3. .NET 4:Cách định cấu hình tệp EDMX trong lắp ráp khác trong Web.Config

  4. Khi không có 'Thứ tự theo' được chỉ định, truy vấn sẽ chọn thứ tự nào cho tập hợp bản ghi của bạn?

  5. Toán tử T-SQL XOR