Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: SQL Injection in .NET | Tìm hiểu về Injection in .NET

  1. #1
    Ngày gia nhập
    01 2008
    Bài viết
    240

    Mặc định SQL Injection in .NET | Tìm hiểu về Injection in .NET

    Hi all.
    Mình muốn hỏi phòng chống SQL Injection trong .NEt thì làm kiểu gì/
    thanks
    Time

  2. #2
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Mấy cái này mình cũng không rành lắm nhưng bạn có thể dùng:
    - SqlCommandBuilder để build các câu lệnh.
    - Có thể dùng với proc để làm việc với database vì thằng database 2k5 nó có cơ chế để chống cái này.

    có gì ko đúng mong các tiền bối chỉ giáo

  3. #3
    Ngày gia nhập
    11 2007
    Bài viết
    294

    Để chống sql injection thì trước hết phải hỉu nó làm thế nào đã ^^!

    Nghĩa đen của injection là "tiêm". SQL Injection là "tiêm" thêm 1 đoạn mã sql vào đoạn sql ban đầu.

    Thế làm thế nào để "tiêm"? Cách đơn giản nhất là dựa vào cách create các lệnh sql của coder. Đa phần các coder ít kinh nghiệm hay tạo dynamic sql bằng cách cộng các string lại với nhau, ví dụ thế này:
    Code:
    sql = "select * from abc where x ='" + txtExample.Text + "'";
    Bi giừ ta sẽ tiêm thêm 1 đoạn nữa vào cái sql kia thông qua txtExample. Ví dụ ta sẽ gõ đoạn này vào txtExample :
    Code:
    x' or '1'='1
    Khi đó thì cái lệnh sql kia sẽ thành

    Code:
    select * from abc where x ='x' or '1'='1'
    Cái này sẽ select tất tần tật cái gì có trong abc ra. Đây là 1 ví dụ đơn giản về SQL Injection.

    Thế làm cách nào để chống. Đơn giản nhất là không cho các hacker có cơ hội thay đổi lệnh sql nữa. Chúng ta sẽ dùng parameter.

    Thay vì việc cộng string để ra dynamic sql ta sẽ khai báo sql từ đầu, sau đó truyền parameter cho nó. Ví dụ:

    Code:
    sql = "select * from abc where x = @abc";
    sqlcommand = new SqlCommand(sql,connection);
    sqlcommand.Parameters.Add("@abc", SqlDbType.VarChar, 80).Value = txtExample.Text;
    Sử dụng command builder hay store cũng chỉ là cách ứng dụng parameter mà thôi. Dark có post 1 quyển SQL Injection ở đây : http://www.oravn.com/viewtopic.php?t=1328

    Ai khoái thì lấy về coi chơi ^^!

    Cheers!
    Is the moon rising...

  4. #4
    Ngày gia nhập
    01 2008
    Bài viết
    240

    Trích dẫn Nguyên bản được gửi bởi darkan Xem bài viết
    Để chống sql injection thì trước hết phải hỉu nó làm thế nào đã ^^!

    Nghĩa đen của injection là "tiêm". SQL Injection là "tiêm" thêm 1 đoạn mã sql vào đoạn sql ban đầu.

    Thế làm thế nào để "tiêm"? Cách đơn giản nhất là dựa vào cách create các lệnh sql của coder. Đa phần các coder ít kinh nghiệm hay tạo dynamic sql bằng cách cộng các string lại với nhau, ví dụ thế này:
    Code:
    sql = "select * from abc where x ='" + txtExample.Text + "'";
    Bi giừ ta sẽ tiêm thêm 1 đoạn nữa vào cái sql kia thông qua txtExample. Ví dụ ta sẽ gõ đoạn này vào txtExample :
    Code:
    x' or '1'='1
    Khi đó thì cái lệnh sql kia sẽ thành

    Code:
    select * from abc where x ='x' or '1'='1'
    Cái này sẽ select tất tần tật cái gì có trong abc ra. Đây là 1 ví dụ đơn giản về SQL Injection.

    Thế làm cách nào để chống. Đơn giản nhất là không cho các hacker có cơ hội thay đổi lệnh sql nữa. Chúng ta sẽ dùng parameter.

    Thay vì việc cộng string để ra dynamic sql ta sẽ khai báo sql từ đầu, sau đó truyền parameter cho nó. Ví dụ:

    Code:
    sql = "select * from abc where x = @abc";
    sqlcommand = new SqlCommand(sql,connection);
    sqlcommand.Parameters.Add("@abc", SqlDbType.VarChar, 80).Value = txtExample.Text;
    Sử dụng command builder hay store cũng chỉ là cách ứng dụng parameter mà thôi. Dark có post 1 quyển SQL Injection ở đây : http://www.oravn.com/viewtopic.php?t=1328

    Ai khoái thì lấy về coi chơi ^^!

    Cheers!
    thanks
    bạn cho mình hỏi điều này đảm bào chống được mọi kiểu injection chứ?
    Time

Các đề tài tương tự

  1. Algorithm Cách gọi hàm từ dll đã được injection vào tiến trình khác?
    Gửi bởi tuandoi1 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 11-01-2013, 12:34 PM
  2. Code trang login tránh được lỗi injection?
    Gửi bởi daogiatien trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 13
    Bài viết cuối: 09-05-2012, 10:46 PM
  3. Dùng ASP.NET liệu có bị SQL Injection từ bên ngoài
    Gửi bởi anhduongtalents trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 4
    Bài viết cuối: 28-10-2011, 06:46 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn