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

Ngăn chặn SQL Injection trong ASP.Net

Hãy thử sử dụng truy vấn được tham số hóa tại đây là liên kết http://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/

Ngoài ra, không sử dụng OpenQuery ... sử dụng cái này để chạy lựa chọn

SELECT * FROM db...table WHERE ref = @ref AND bookno = @bookno

Các bài viết khác mô tả một số tùy chọn của bạn:

http://support.microsoft.com/kb/314520

Cú pháp T-SQL để kết nối với SQL Server khác là gì?

Đã chỉnh sửa

Lưu ý:Câu hỏi ban đầu của bạn là hỏi về các truy vấn phân tán và máy chủ được Liên kết. Câu lệnh mới này không tham chiếu đến một truy vấn phân tán. Tôi chỉ có thể cho rằng bây giờ bạn đang kết nối trực tiếp với cơ sở dữ liệu. Đây là một ví dụ sẽ hoạt động. Đây là một trang web tham khảo khác để sử dụng SqlCommand.Parameters

SqlCommand cmd = new SqlCommand("Select * from Table where [email protected]", con); 
cmd.Parameters.Add("@ref", SqlDbType.Int);
cmd.Parameters["@ref"] = 34;

Đã chỉnh sửa:

Ok Jamie taylor, tôi sẽ cố gắng trả lời lại câu hỏi của bạn.

Bạn đang sử dụng OpenQuery vì có thể bạn đang sử dụng DB được liên kết

Về cơ bản, vấn đề là Phương thức OpenQuery lấy một chuỗi mà bạn không thể chuyển một biến như một phần của chuỗi bạn đã gửi đến OpenQuery.

Thay vào đó, bạn có thể định dạng truy vấn của mình như thế này. Ký hiệu theo sau servername.databasename.schemaname.tablename. Nếu bạn đang sử dụng một máy chủ được liên kết qua odbc, hãy bỏ qua tên cơ sở dữ liệu và tên lược đồ, như được minh họa bên dưới

    Dim conn As SqlConnection = New SqlConnection("your SQL Connection String")
    Dim cmd As SqlCommand = conn.CreateCommand()
    cmd.CommandText = "Select * db...table where investor = @investor"
    Dim parameter As SqlParameter = cmd.CreateParameter()
    parameter.DbType = SqlDbType.Int
    parameter.ParameterName = "@investor"
    parameter.Direction = ParameterDirection.Input
    parameter.Value = 34


  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ối các giá trị dựa trên ID

  2. Cấu hình sao chép giao dịch SQL Server

  3. Mục đích của việc sao chép dữ liệu là gì?

  4. Trường hợp trong Tuyên bố Chọn

  5. Bao gồm bảng &lược đồ khi liệt kê các cột nhận dạng trong cơ sở dữ liệu máy chủ SQL