SQL Injection là gì? Cách bảo mật website an toàn trước lỗ hổng này

5.0/5 (4 Reviews)

26/05/2022

Nói về vấn đề bảo mật an ninh mạng cho nền tảng website thì không thể không nhắc đến sự tấn công của SQL Injection. SQL Injection gây ra lỗ hổng bảo mật tồn tại trong cơ sở dữ liệu.

Khi nói về vấn đề bảo mật an ninh mạng cho nền tảng website thì không thể không nhắc đến cuộc tấn công của SQL Injection. Bởi SQL Injection được cho là kiểu tấn công website nguy hiểm nhất hiện nay và gây ra hậu quả, thiệt hại rất lớn.

Tình trạng website bị tấn công bởi SQL Injection ngày càng trở nên phổ biến, tuy nhiên nhiều người chưa nhận thức được sự nguy hiểm của nó hoặc chưa biết cách để khắc phục và phòng tránh SQL Injection để giúp doanh nghiệp luôn an toàn và tránh những tác động xấu. Bài viết dưới đây, LPTech sẽ giúp bạn hiểu rõ hơn về SQL Injection và cách để bảo mật website an toàn trước lỗ hổng này.

SQL Injection là gì? 

SQL Injection (viết tắt SQLi) là kỹ thuật tấn công web lợi dụng lỗ hổng trong việc kiểm tra dữ liệu đầu vào (Input) của ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu, làm sai lệch các câu truy vấn ban đầu bằng SQL.

SQL Injection cho phép kẻ tấn công chèn vào các đoạn mã SQL bất hợp pháp và thực hiện các thao tác như nhà quản trị web. Với mục đích khai thác lỗ hổng bảo mật tồn tại trong cơ sở dữ liệu, khai thác và lấy cắp thông tin, dữ liệu hoặc tệ nhất là chiếm quyền cơ sở dữ liệu.

SQL Injection là một dạng tấn công dễ thực hiện, hầu hết mọi thao tác người tấn công chỉ cần được thực hiện với một trình duyệt web. Theo như các nhà nghiên cứu về SQL Injection thì có đến gần 50% các vụ tấn công bảo mật liên quan đến SQL Injection.

SQL Injection

Nguyên nhân gây ra lỗi SQL Injection

Lỗi bắt nguồn từ mã nguồn của ứng dụng web chứ không phải từ phía database, chính vì thế bất cứ thành phần nào của ứng dụng mà người dùng có thể tương tác được để điều khiển nội dung. Dưới đây là các nguyên nhân gây ra lỗi SQL:

Không kiểm tra dữ liệu đầu vào (Input)

Đây là dạng lỗi SQL Injection xảy ra khi thiếu đoạn mã kiểm tra dữ liệu đầu vào trong câu truy vấn SQL. Kết quả là người dùng cuối có thể thực hiện một số truy vấn không mong muốn đối với cơ sở dữ liệu của ứng dụng.

Xử lý không đúng trọng tâm

Lỗi SQL injection dạng này thường xảy ra do lập trình viên định nghĩa đầu vào dữ liệu không rõ ràng hoặc thiếu bước kiểm tra và lọc kiểu dữ liệu đầu vào. Điều này có thể xảy ra khi một trường số được sử dụng trong truy vấn SQL nhưng lập trình viên lại thiếu bước kiểm tra dữ liệu đầu vào để xác minh kiểu của dữ liệu mà người dùng nhập vào có phải là số hay không.

Lỗi bảo mật bên trong máy chủ

Đôi khi lỗ hổng có thể tồn tại chính trong phần mềm máy chủ cơ sở dữ liệu, như là trường hợp hàm mysql_real_escape_string()của các máy chủ MySQL. Điều này sẽ cho phép kẻ tấn công có thể thực hiện một cuộc tấn công SQL injection thành công dựa trên những ký tự Unicode không thông thường ngay cả khi dữ liệu đầu vào đã được kiểm soát.

Nguyên nhân gây ra lỗi SQL Injection

Ảnh hưởng, hậu quả của SQL Injection gây ra.

SQL Injection tấn công bằng hình thức chèn, gửi lệnh SQL mang tính độc hại tới máy chủ thông qua việc lợi dụng thao tác đăng nhập, đăng ký,...từ phía người dùng. Bởi vậy nó sẽ tác động và gây ảnh hưởng rất lớn đến thông tin và dữ liệu thống gây ra những hậu quả rất nghiêm trọng.

SQL Injection cho phép kẻ tấn công có thể thực hiện các thao tác xóa, hiệu chỉnh, … do có toàn quyền trên cơ sở dữ liệu của ứng dụng, gây ra những thiệt hại lớn khiến những dữ liệu trong database bị lộ ra ngoài.

Sự tấn công của SQL không những cho phép những kẻ tấn công đọc được, chỉnh sửa được dữ liệu. Họ có thể lợi dụng điểm này để xóa toàn bộ dữ liệu và làm cho hệ thống web ngừng hoạt động, tạo các bảng dữ liệu mới nó có thể điều khiển toàn bộ hệ quản trị CSDL và với quyền hạn rộng lớn.

Việc lộ thông tin gây ảnh hưởng rất lớn đến hình ảnh, uy tín, bảo mật công ty, doanh nghiệp bạn. Khi thông tin và dữ liệu của khách hàng bị lộ, họ sẽ không tin tưởng và sử dụng dịch vụ của bạn nữa. Khách hàng họ thường để chung một mật khẩu cho nhiều tài khoản nên khi bị lỗ một tài khoản thì những tài khoản còn lại cũng vậy. Bởi vậy khách hàng sẽ bị ảnh hưởng rất lớn từ đó họ sẽ không sử dụng dịch vụ của công ty dẫn đến phá sản chủ doanh nghiệp.

Cách thức hoạt động và tấn công của SQL Injection

SQL Injection là một trong số những lỗi bảo mật phổ biến nhất. Xác suất gặp phải lỗ hổng bảo mật loại này trong một website là khá cao, bởi vậy doanh nghiệp nào cũng nên cảnh giác cao và để ngăn chặn được lỗ hổng bảo mật thì bạn phải nắm được cách thức hoạt động và tấn công của SQL Injection.

Cách thức hoạt động của SQL Injection

SQL Injection hoặt động như sau:

  1. Tìm kiếm mục tiêu: tìm kiếm các trang web cho phép việc submit dữ liệu ở bất kỳ trình duyệt nào chẳng hạn như các trang login, search, feedback,...
  2. Kiểm tra chỗ yếu của trang web: Thử gửi các file, tên đăng nhập, mật khẩu, field id, bằng hi' or 1=1-- . Nếu site chuyển sang tham số file ẩn, hãy download source HTML, lưu trên đĩa cứng và thay đổi lại URL cho phù hợp.
  3. Thi hành lệnh từ xa của SQL Injection: Thông qua các yêu cầu của người dùng được cho phép bởi website, máy chủ cơ sở dữ liệu sẽ được gửi đến lệnh SQL độc hại.
  4. Nhận output của SQL: Có thể sử dụng sp_makewebtask để ghi các output của SQL query ra một file HTML, lưu ý folder "share" phải được share trước đó.
  5. Nhận dữ liệu qua “database using ODBC error message”: Nhập các thông tin quan trọng từ các thông báo lỗi của máy chủ SQL để nhập tên của table.
  6. Xác định tên của column trong table: Table INFORMATION_SCHEMA COLUMNS chứa tên của tất cả các column trong table. Xác định và khai thác tên của các cột có trong table.
  7. Thu thập các dữ liệu quan trọng: Sau khi xác định được tên của column và table, kẻ tấn công có thể dễ dàng thu thập được những thông tin quan trọng.
  8. Nhận các ký tự alphabet và numeric string: nhằm gây thất bại cho quá trình chuyển đổi từ từ text sang số của máy chủ.
  9. Thay đổi dữ liệu của CSDL: Khi đã có tên của tất cả các column trong table, có thể sử dụng lệnh update hoặc insert để sửa đổi/tạo mới một record vào table.

Cách thức hoạt động và tấn công của SQL Injection

Các hình thức tấn công của SQL Injection

SQL Injection có thể tấn công bất cứ lúc nào qua các hình thức sau đây:

Vượt qua kiểm tra lúc đăng nhập (Bypass Login)

Dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng web. Thông thường để cho phép người dùng truy cập vào các website được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu.
Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực hiện tiếp. Điểm sơ hở trong đoạn mã xử lý nhập liệu trên nằm ở chỗ dữ liệu nhập vào từ người dùng được dùng để xây dựng trực tiếp câu lệnh SQL. Chính điều này cho phép tin tặc có thể điều khiển câu truy vấn sẽ được thực hiện.

Dạng tấn công thu thập thông tin dựa trên các phản hồi từ database

Các database đều có tính năng thông báo lỗi xảy ra trong quá trình truy vấn dữ liệu. Mục đích của tính năng này là giúp người quản trị có thể dễ dàng nhận biết và sửa lỗi dễ dàng hơn. Tuy nhiên, nó lại là một điểm yếu bị lợi dụng trong các cuộc tấn công SQL Injection.
Để thực hiện được kiểu tấn công này, kẻ tấn công phải có khả năng sử dụng các câu lệnh SQL thông thường, biết cách lợi dụng sơ hở trong các thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công.

Cách bảo mật website an toàn trước lỗ hổng này.

Hiện nay có nhiều Framework hiện đại không ngừng đưa ra những giải pháp mặc định để phòng chống lại SQL Injection, tuy nhiên để đảm bảo an toàn trước cuộc tấn công thì bạn phải nắm được cách để phát hiện các lỗ hổng từ đó tìm ra cách khắc phù hợp giúp website được bảo mật an toàn.

Cách phát hiện lỗ hổng SQL

Phần lớn các lỗ hổng SQL Injection được tìm thấy nhanh chóng và đáng tin cậy bằng cách sử dụng trình quét lỗ hổng web có sẵn trên internet. SQL có thể được phát hiện thủ công bằng cách kiểm tra toàn bộ hệ thống vào mọi thời điểm trong ứng dụng:

  1. Gửi ký tự trích dẫn duy nhất ‘ và tìm kiếm lỗi hoặc bất thường khác.
  2. Đệ trình một số cú pháp dành riêng cho SQL để đánh giá giá trị cơ sở (bản gốc) của điểm nhập và đến một giá trị khác và tìm kiếm sự khác biệt có hệ thống trong các phản hồi của ứng dụng.
  3. Đệ trình các điều kiện Boolean như OR 1 = 1 và OR 1 = 2 và tìm kiếm sự khác biệt trong phản hồi của ứng dụng.
  4. Gửi tải trọng được thiết kế để kích hoạt độ trễ thời gian khi được thực hiện trong truy vấn SQL và tìm kiếm sự khác biệt về thời gian thực hiện để phản hồi.
  5. Gửi tải trọng được thiết kế để kích hoạt tương tác mạng ngoài băng khi được thực hiện trong truy vấn SQL và giám sát mọi tương tác kết quả.

sql-la-gi-1

Cách bảo mật website an toàn, ngăn chặn lỗ hổng SQL

Để bảo mật website một cách an toàn trước lỗ hổng SQL cần dựa vào các kênh Input từ phía người sử dụng. Dưới đây là cách các để ngăn chặn lỗ hổng nguy hiểm này:

  1. Không được tin tưởng những input người dùng nhập vào: bạn cần làm là xác thực mọi dữ liệu trước khi sử dụng câu lệnh SQL. Bạn cần nhìn nhận các dữ liệu nhập vào hệ thống đều là các yếu tố độc hại, bởi nó sử dụng rất nhiều yếu tố như cookie, chuỗi tham vấn, các tệp tin được tải lên hay Input bị ẩn.
  2. Sử dụng các thủ tục được lưu trữ: có thể trừu tượng hóa các lệnh SQL và xem xét toàn bộ input. Nhờ đó không gây ảnh hưởng đến cú pháp lệnh SQL.
  3. Chuẩn bị sẵn các lệnh: tạo truy vấn SQL như hành động đầu tiên và xử lý toàn bộ dữ liệu đã được gửi tương tự như những tham số.
  4. Thông báo lỗi đúng: các thông báo lỗi phải tuyệt đối chính xác thông tin, chi tiết nhạy cảm và vị trí xảy ra lỗi trên thông báo lỗi.
  5. Giới hạn quyền truy cập: chỉ các tài khoản có quyền truy cập mới được kết nối cơ sở dữ liệu, để giảm thiểu những lệnh SQL được thực thi tự động trên server.
  6. Loại bỏ các ký tự meta và extend: khi nhận được các input người dùng, các tham số từ URL hay các giá trị từ cookie thì bạn cần loại bỏ các ký tự meta và extend như /\, NULL, LF, CR,... trong các string.
  7. Chuyển các giá trị numeric sang integer hoặc dùng ISNUMERIC: trước khi Query SQL để chắc chắn nó là một integer.
  8. Xóa các stored procedure trong database master không dùng như xp_cmdshell, xp_startmail, xp_sendmail, sp_makewebtask.

SQL Injection là một trong lỗ hổng phổ biến và nguy hiểm đối với website, chính bởi vậy những nhà lập trình phải trang bị cho mình đầy đủ kiến thức về lỗ hổng SQL này. Hy vong bài viết dưới đây sẽ giúp bạn hiểu rõ hơn về SQL Injection để đảm bảo an toàn cho website.

Thông Tin Liên Hệ

ĐỀ XUẤT CHO BẠN

Bài Viết Cùng Chuyên Mục

article-img

Zalo Mini App ngành chăm sóc sức khỏe: Tối ưu vận hành phòng khám

Zalo Mini App ngành chăm sóc sức khỏe giúp tối ưu vận hành, nâng cao trải nghiệm bệnh nhân và tăng tỷ lệ tái khám. Khám phá ngay giải pháp hiệu quả.

author-avatar

Phạm Ngọc Thuý Nhi

30/03/2026

XEM CHI TIẾT
article-img

Zalo Mini App ngành gia dụng: Giải pháp bảo hành điện tử tối ưu

Zalo Mini App ngành gia dụng giúp doanh nghiệp tối ưu vận hành, quản lý khách hàng và tăng doanh thu hiệu quả. Khám phá ngay tính năng, lợi ích chi tiết.

author-avatar

Phạm Ngọc Thuý Nhi

30/03/2026

XEM CHI TIẾT
article-img

Zalo Mini App ngành thời trang: Tạo trải nghiệm mua sắm khác biệt

Zalo Mini App ngành thời trang giúp tối ưu hành trình mua sắm của khách hàng. Khám phá ngay cách triển khai để không bỏ lỡ cơ hội bứt phá doanh thu.

author-avatar

Phạm Ngọc Thuý Nhi

30/03/2026

XEM CHI TIẾT
article-img

Zalo Mini App Ngành F&B: Nâng Tầm Lợi Thế Cạnh Tranh

Khám phá cách Zalo Mini App ngành F&B giúp doanh nghiệp bứt phá khả năng cạnh tranh và giữ chân khách hàng hiệu quả. Xem ngay.

author-avatar

Phạm Ngọc Thuý Nhi

26/03/2026

XEM CHI TIẾT
article-img

Zalo Mini App Bất Động Sản: Giải Pháp Đột Phá Doanh Thu 2026

Chuyển đổi số ngành địa ốc với Zalo Mini App bất động sản. Giải pháp giúp doanh nghiệp tiếp cận 80 triệu người dùng. Xem ngay.

author-avatar

Phạm Ngọc Thuý Nhi

25/03/2026

XEM CHI TIẾT
article-img

Zalo Mini App Ngành Trang Sức: Đón Sóng Tăng Trưởng Thị Trường

Khám phá cách Zalo Mini App ngành trang sức hỗ cập doanh nghiệp chăm sóc khách hàng và đột phá doanh thu. Xem ngay.

author-avatar

Phạm Ngọc Thuý Nhi

24/03/2026

XEM CHI TIẾT

Chất Lượng Sản Phẩm Tạo Nên Uy Tín Doanh Nghiệp.

Tầm nhìn của LPTech mong muốn trở thành công ty Công nghệ không chỉ phát triển tại thị trường Việt Nam mà còn mở rộng ra cả khu vực Asia. Vậy nên, mỗi một công việc mà LPTech làm đều sẽ ảnh hưởng đến thương hiệu của công ty ở hiện tại lẫn tương lai. Chính vì thế, quý khách hàng có thể yên tâm về chất lượng website được thiết kế tại LPTech.

LIÊN HỆ NGAY
bgQuality

THÔNG BÁO

Tin nổi bật

notification-img
Thông báo lịch nghỉ lễ Mùng 10 tháng 3, 30/4 và 1/5 năm 2026

Công ty TNHH Thương mại Điện tử Công nghệ LP xin thông báo đến Quý Khách hàng, Đối tác và toàn thể Nhân viên lịch nghỉ lễ 10/3, 30/4 và 1/5 năm 2026

notification-img
Thông báo nghỉ Tết Nguyên Đán 2026

LPTech kính chúc Quý Khách hàng, Quý Đối tác và toàn thể nhân sự một năm mới an khang, nhiều niềm vui, đủ đầy yêu thương và vững bước thành công.

notification-img
Thông báo lịch nghỉ Tết Dương lịch 2026

Chào đón năm mới 2026, LPTech xin gửi đến Quý Khách hàng, Đối tác và toàn thể nhân viên lời chúc sức khỏe, bình an và thành công, đồng thời thông tin về lịch nghỉ Tết Dương lịch 2026 của Công ty.

notification-img
Vũng Tàu: Du lịch công ty 2 ngày 1 đêm cùng LPTech

Giữa những ngày cuối năm bận rộn, cả team rủ nhau đi trốn một chuyến về Vũng Tàu để đổi gió và tận hưởng biển xanh. Một chuyến đi đầy ắp kỉ niệm.

notification-img
Thông báo lịch nghỉ du lịch thường niên 2025

Một chuyến du lịch ngắn ngày nhưng đầy năng lượng này sẽ giúp đội ngũ LPTech tạm rời nhịp làm việc, nghỉ ngơi và sẵn sàng cho những mục tiêu mới.

notification-img
Tết Trung Thu 2025 – Mùa trăng đoàn viên, mùa yêu thương lan tỏa

Giữa sắc đèn lung linh và hương bánh nồng nàn, Tết Trung Thu trở về như bản nhạc dịu êm của đoàn viên, hạnh phúc và sự gắn kết.

notification-img
LPTech chào mừng Quốc khánh 2/9 – 80 năm tự hào dân tộc

Kỷ niệm Quốc khánh 2/9 – LPTech tự hào đồng hành cùng tinh thần dân tộc, tổ chức nhiều hoạt động nội bộ ý nghĩa để gắn kết tập thể và lan tỏa giá trị yêu nước.

notification-img
Thông báo lịch nghỉ lễ Quốc khánh 2025

LPTech kính chúc Quý khách hàng, Đối tác và toàn thể nhân viên có một kỳ nghỉ lễ vui bên gia đình và người thân!