Tấn công SQL Injection trong ASP.NET

Với mỗi lập trình viên chúng ta, tạo ra một sản phẩm website chính là đứa con tinh thần, bởi vì bạn đã bỏ ra rất nhiều công sức, ý tưởng sáng tạo để xây dựng nên. Nếu chúng ta làm cho khách hàng, thì nó còn là uy tín, thương hiệu cá nhân của bạn. Để có một sản phẩm như vậy đòi hỏi chúng ta phải làm rất nhiều việc, từ thiết kế giao diện, xây dựng cơ sở dữ liệu, viết code…

Tấn công SQL Injection trong ASP.NET
Tấn công SQL Injection trong ASP.NET

Và còn một điều cực kỳ quan trọng đó chính là vấn đề bảo mật website. Trong thời đại thông tin ngày nay, bảo mật luôn là yếu tố hàng đầu, nhất là những công ty lớn như Facebook, Micrcosoft, các công ty tài chính, ngân hàng. Bạn nghe nói về bảo mật, an toàn thông tin hàng ngày, hàng giờ. Chúng ta, những lập trình viên thì càng nên có ý thức xây dựng sản phẩm bảo mật ngay từ đầu, tức là từ trong code của chúng ta. Nếu bạn nào giữ suy nghĩ rằng, website của mình nhỏ, cần gì bảo mật… thì bài viết này sẽ không phù hợp với bạn. Bài viết này phù hợp với những bạn mới bước chân vào thế giới lập trình web. Còn nếu bạn pro rồi, thì không sao cả, bạn có thể đưa ra những đóng góp ý kiến giúp mình hoàn thiện hơn

Nói về bảo mật thì có rất nhiều lý thuyết mà hẳn bạn đã nghe qua, các hình thức tấn công như:

  1. Tấn công trên tham số truyền
  2. Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)
  3. Tràn bộ đệm (Buffer OverFlow)
  4. Tấn công SQL (SQL Injection)
  5. Mã hoá URL
  6. Tấn công bằng mã độc
  7. Directory Transversal attack?
  8. Local attack
  9. Tấn công phiên làm việc
  10. Đánh cắp phiên làm việc (Session Hijacking)
  11. Để lộ thông tin
  12. Upload dữ liệu bất hợp lệ
  13. Tấn công từ chối dịch vụ (DDos)
  14. Kỹ thuật tấn công Cross Site Request Forgery (CSRF hay XSRF)

(Bạn nào chuyên sâu, còn hình thức tấn công nào nữa, xin góp ý mình bổ sung thêm)
Nhưng ở đây mình chỉ xin bàn về SQL Injection, là lỗ hổng bảo mật do sự chủ quan, hay thiếu kinh nghiệm của coder chúng ta. Và chỉ chính chúng ta mới khắc phục được, chứ không phải nhờ firewall hay server tốt.
Thật vậy, một sản phẩm dù đẹp như thế nào, bạn quảng cáo nó tốt đến đâu, chạy nhanh ra sao, nhưng nếu bảo mật kém thì hẳn là thiếu sót lớn. Hacker có thể khai thác được cơ sở dữ liệu của bạn, nếu cơ sở dữ liệu của bạn chứa thông tin khách hàng của bạn (Ngân hàng chẳng hạn…) thì bạn đã gián tiếp gây nguy hại cho an toàn thông tin của khách hàng. Tệ hại hơn nó làm gián đoạn hoạt động trên website của bạn, mất uy tín với khách hàng, và nhiều thứ khác nữa…

Vậy SQL Injection là gì? Nó có thể gây hại như thế nào đối với trang web của bạn?
SQL injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng của việc kiểm tra dữ liệu đầu vào trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu trả về để inject (tiêm vào) và thi hành các câu lệnh SQL bất hợp pháp. SQL injection có thể cho phép những kẻ tấn công thực hiện các thao tác, delete, insert, update,… trên cơ sở dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy, lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lý bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase…
Các khai thác phổ biển của SQL Injection:
– Đăng nhập không mật khẩu
– Truy vấn lấy thông tin
– Cập nhật thông tin
– Xóa thông tin
– Xóa bảng
– Tấn công sử dụng stored-procedures
– …
Video Demo Tấn công SQL Injection trong ASP.NET

Tóm tắt Video

  • Tạo Cơ sở dữ liệu bảng Member (Lưu thông tin thành viên)
  • Tạo dự án ASP.NET mới
  • Tạo trang Đăng nhập, trang quản lý Member
  • Viết code đăng nhập, code tìm kiếm thành viên
  • Demo tấn công SQL Injection
  • Đăng nhập không mật khẩu
  • Truy vấn lấy thông tin bảng Member
  • Thêm, Xóa, Sửa trên bảng Member
  • Xóa bảng Member…
  • Cách phòng tránh.
Trong thực tế thì hoàn toàn không đơn giản như vậy, nhưng không vì thế mà chúng ta chủ quan, lơ là vấn đề bảo mật.
Nếu bạn đã hoàn thành theo hướng dẫn mà vẫn gặp khó khăn, hãy tải mã nguồn ứng dụng tại đây:  Download

Cảm ơn bạn đọc và mình luôn đánh giá cao phản hồi của bạn.