• Kiến thức
  • Network
  • Security
  • Software
  • Thủ thuật
  • Tin học văn phòng
  • Tin tức
  • Mail ảo tạm thời miễn phí
  • Tools tra cứu thông tin
  • Công cụ đổi số thành chữ
AnonyViet
  • Tin tức
  • Network
    • Mạng cơ bản
    • Hyper-V
    • Linux
    • Windown Server 2012
  • Security
    • Basic Hacking
    • Deface
    • Kali Linux / Parrot
    • SQL Injection
  • Thủ thuật
    • Khóa Học Miễn Phí
    • Code
    • Mẹo Vặt Máy Tính
    • Facebook
    • Windows 7/8/10/11
    • Đồ Họa
    • Video
  • Software
    • Phần mềm máy tính
    • Phần mềm điện thoại
  • Tin học văn phòng
  • Kiến thức
  • MMO
    • Advertisers – Publishers
    • Affiliate Program
    • Kiếm tiền bằng điện thoại
    • Pay Per Click – PPC
No Result
View All Result
  • Tin tức
  • Network
    • Mạng cơ bản
    • Hyper-V
    • Linux
    • Windown Server 2012
  • Security
    • Basic Hacking
    • Deface
    • Kali Linux / Parrot
    • SQL Injection
  • Thủ thuật
    • Khóa Học Miễn Phí
    • Code
    • Mẹo Vặt Máy Tính
    • Facebook
    • Windows 7/8/10/11
    • Đồ Họa
    • Video
  • Software
    • Phần mềm máy tính
    • Phần mềm điện thoại
  • Tin học văn phòng
  • Kiến thức
  • MMO
    • Advertisers – Publishers
    • Affiliate Program
    • Kiếm tiền bằng điện thoại
    • Pay Per Click – PPC
No Result
View All Result
AnonyViet
No Result
View All Result

SQL Injection là gì? Làm thế nào để ngăn chặn lỗ hổng SQL Injection

Ellyx13 by Ellyx13
16/05/2021 - Updated on 24/07/2025
in Code
A A
0

Mục lục bài viết

  1. Cách khai thác lỗ hổng SQL Injection
  2. Làm thế nào để ngăn chặn lỗ hổng SQL injection?
    1. Ví dụ đơn giản
  3. Sử dụng Object Relational Mapping
    1. Cảnh báo
  4. Prepared statements
  5. Web Application Firewall
  6. Database Firewall
  7. Kết luận
  8. Câu hỏi thường gặp
    1. SQL Injection là gì và tại sao nó nguy hiểm?
    2. Cách hiệu quả nhất để ngăn chặn SQL Injection là gì?
    3. Prepared Statements có an toàn hơn việc nối chuỗi trực tiếp không?

Các lỗ hổng SQL injection phát sinh khi bạn tạo ra các truy vấn cơ sở dữ liệu một cách không an toàn. Hiểu đơn giản là người dùng có thể xem được database của website bạn bằng cách nhập câu truy vấn vào URL hoặc form điền thông tin. Đừng coi thường SQL injection nhé vì nó nằm trong Top 10 lỗ hổng bảo mật web theo công bố OWASP 2020 đấy.

📢 Tham gia kênh Telegram của AnonyViet
👉 Vào Telegram AnonyViet
Cập nhật bài mới, tools hay và thủ thuật IT nhanh nhất

sql injection

Các bài viết liên quan

Dùng W7SFW Để Chống Virus Và Bảo Mật Website WordPress 3

Dùng W7SFW Để Chống Virus Và Bảo Mật Website WordPress

11/03/2026
ung dung cau nguyen iran bi hack

Ứng dụng cầu nguyện của Iran bị hack, gửi thông điệp kêu gọi đầu hàng

01/03/2026
Cách đặt bảo mật 2 lớp cho ChatGPT 4

Cách đặt bảo mật 2 lớp cho ChatGPT

06/10/2025
xoa spam comment wordpress

Cách xóa nhanh tất cả Bình luận rác trên WordPress

14/07/2025 - Updated on 25/07/2025

Cách khai thác lỗ hổng SQL Injection

Đơn giản nhất là dùng tool auto exploit SQLi. Mình thường dùng SQLmap, vì theo kinh nghiệm đây là tool có khả năng khai thác tốt nhất. Nhưng nhược điểm là bạn phải dùng lệnh thay vì giao diện.

Hoặc bạn có thể dùng công cụ SQL Dumper có giao diện với nhiều tính năng dễ thiết lập hơn. Nếu mới tìm hiểu bạn có thể dùng thử công cụ này để khai thác database của Website.

Làm thế nào để ngăn chặn lỗ hổng SQL injection?

Cách tốt nhất để ngăn chặn các lỗ hổng SQL injection là sử dụng framework cho phép bạn lọc dữ liệu đầu vào một cách an toàn trước khi đưa vào database. ORM (Object Relational Mapper) là một lựa chọn tốt mà bạn nên thử. Đối với các lớp bảo mật bổ sung, hãy xác thực tất cả đầu vào và sử dụng WAF (Web Application Firewall).

Ví dụ đơn giản

Giả sử mình có một ứng dụng Java cho phép người dùng truy xuất tài liệu của họ bằng ID. Mình có thể làm như thế này:

String query = "SELECT * FROM documents WHERE ownerId=" + authContext.getUserId() + " AND documentName = '" + request.getParameter("docName") + "'";
executeQuery(query);

Nếu ID người dùng là 25 và URL là https://www.example.com/documents/?docName=ABC123, thì truy vấn sẽ là:

SELECT * FROM documents WHERE ownerId=25 AND documentName='ABC123';

Vẫn ổn mà đúng không? Nhưng điều gì sẽ xảy ra nếu URL là https://www.example.com/documents/?docName=ABC123’OR’1’=’1?

Bây giờ mình sẽ nhận được truy vấn sau đây trả về tất cả các tài liệu của tất cả người dùng (vì 1 = 1 luôn đúng):

SELECT * FROM documents WHERE ownerId=25 AND documentName='ABC123' OR '1'='1';

Vậy làm thế nào để tránh lỗi này?

Sử dụng Object Relational Mapping

Lấy Java làm ví dụ, sử dụng ORM chẳng hạn như hibernate để triển khai JPA (Java Persistence API) có thể trông như thế này.

Đầu tiên, xác định model.

@Entity
public class Document {
  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  private Long id;
  private String documentName;
  private Integer ownerId;
}

Sau đó, xác định class repository.

@Repository
public interface DocumentRepository extends JpaRepository<Document, Long> {
  List<Document> findByDocumentNameAndOwnerId(String documentName, Integer ownerId);
}

Cuối cùng, bạn có thể sử dụng repository và tìm nạp các tài liệu như sau:

List<Document> docs = documentRepository.findByDocumentNameAndOwnerId(request.getParameter("docName"), authContext.getUserId());

ORM sẽ xử lý tất cả các tham số một cách an toàn. Bây giờ, giả sử bạn muốn kiểm soát các truy vấn nhiều hơn. Trong trường hợp đó, nhiều ORM cung cấp trình tạo truy vấn mà bạn có thể sử dụng, chẳng hạn như Hibernate Criteria API.

  • https://spring.io/guides/gs/accessing-data-jpa/
  • https://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/Criteria.html

Nếu bạn sử dụng Python, Django cũng có ORM tuyệt vời không kém; còn nếu bạn không sử dụng Django, sqlalchemy là một lựa chọn tuyệt vời.

  • https://docs.djangoproject.com/en/3.1/topics/db/queries/
  • https://www.sqlalchemy.org/

PHP có Doctrine. Bạn chỉ cần google để tìm kiếm các ORM phù hợp với công nghệ mà bạn chọn.

  • https://www.doctrine-project.org/

Cảnh báo

Các framework ORM không hoàn hảo 100%.

Đầu tiên là chúng vẫn có chức năng hỗ trợ truy vấn SQL thô/query parts. Bạn chỉ cần tránh sử dụng các tính năng đó là được.

Thứ hai là các framework ORM thường có lỗ hổng bảo mật, giống như bất kỳ gói phần mềm nào khác. Vì vậy, hãy tìm hiểu các phương pháp hay khác: xác thực tất cả dữ liệu đầu vào, sử dụng WAF, cập nhật các package…

Prepared statements

Prepared statements là một sự lựa chọn thủ công hơn và nên tránh vì so với ORM, nó có nguy cơ mắc lỗi do con người cao hơn đáng kể. Tuy nhiên, cách này vẫn đánh bại phương pháp nối chuỗi đơn giản (như ví dụ trên). Cách tiếp cận này giống như sau:
String query = "SELECT * FROM documents WHERE ownerId=? AND documentName = ?";
PreparedStatement ps = conn.prepareStatement(query);
ps.setString(1, authContext.getUserId());
ps.setString(2, request.getParameter("docName"));
ResultSet rs = ps.executeQuery();

Về lý thuyết, cách này khá an toàn. Tuy nhiên, theo kinh nghiệm của mình, khi codebase phát triển lớn hơn, các sai lầm sẽ bắt đầu xuất hiện. Bạn chỉ cần một lần mắc sai lầm là hoàn toàn có thể bị tấn công. Các trường hợp như mảng (documentId IN (“foo”, “bar”)) là nơi dev thường mắc sai lầm.

Vì vậy, nếu bạn quyết định sử dụng phương pháp này, hãy cẩn thận với nó khi bạn mở rộng codebase.

Web Application Firewall

Các sản phẩm WAF không nên được coi là một biện pháp kiểm soát SQL injection tốt. Nhưng chúng là một lớp bổ sung bảo mật tuyệt vời và thường khá hiệu quả để chống lại các cuộc tấn công SQL injection.

Một giải pháp mã nguồn mở tuyệt vời là triển khai Apache với ModSecurity CRS trước webapp của bạn.

  • https://modsecurity.org/rules.html

Database Firewall

Tùy thuộc vào database và ngân sách của bạn, bạn có thể cân nhắc dùng thử database firewalls. Mình thì chưa từng thử cái này, nhưng các bạn cũng có thể tìm hiểu link dưới, biết đâu nó sẽ giúp ích cho bạn.

  • https://www.mysql.com/products/enterprise/firewall.html

Kết luận

SQL injection là một lỗ hổng injection đơn giản. Và giống như tất cả các lỗ hổng bảo mật khác, bạn có thể ngăn chặn nó bằng cách sử dụng một thư viện hoặc framework thích hợp để xây dựng protocol, trong trường hợp này là SQL.

ORM an toàn hơn prepared statements. Và nếu bạn không cần kiểm soát các truy vấn quá nhiều, hãy sử dụng ORM cấp thấp hơn thường được gọi là trình tạo truy vấn (query builder). WAF có thể thêm một lớp bảo mật, nhưng bạn đừng bao giờ dựa vào nó để bảo mật.

Câu hỏi thường gặp

SQL Injection là gì và tại sao nó nguy hiểm?

SQL Injection là một lỗ hổng bảo mật cho phép kẻ tấn công tiêm các đoạn mã SQL độc hại vào các truy vấn cơ sở dữ liệu của website. Điều này có thể cho phép chúng truy cập, chỉnh sửa hoặc xóa dữ liệu nhạy cảm trong cơ sở dữ liệu của bạn.

Cách hiệu quả nhất để ngăn chặn SQL Injection là gì?

Cách tốt nhất là sử dụng Object-Relational Mapper (ORM). ORM giúp bạn tạo ra các truy vấn an toàn bằng cách xử lý tham số đầu vào một cách an toàn. Ngoài ra, việc xác thực dữ liệu đầu vào và sử dụng Web Application Firewall (WAF) cũng rất quan trọng.

Prepared Statements có an toàn hơn việc nối chuỗi trực tiếp không?

Prepared Statements an toàn hơn việc nối chuỗi trực tiếp khi xây dựng truy vấn SQL, nhưng chúng vẫn tiềm ẩn rủi ro nếu không được sử dụng đúng cách. ORM thường được khuyến nghị hơn vì tính dễ sử dụng và ít lỗi hơn.

Tags: bảo mậthackkhai thác lỗ hỏngsqlsql injectionsqli
Ellyx13

Ellyx13

DevOps với hơn 7 năm kinh nghiệm trong lĩnh vực hạ tầng, tự động hóa CI/CD và triển khai hệ thống phân tán trên các nền tảng như AWS, Azure và Kubernetes. - AWS Certified DevOps Engineer – Professional - Certified Kubernetes Administrator (CKA) - HashiCorp Certified: Terraform Associate - Docker Certified Associate (DCA) Có người không dám bước vì sợ gãy chân, nhưng sợ gãy chân mà không dám bước đi thì khác nào chân đã gãy.

Related Posts

Dùng W7SFW Để Chống Virus Và Bảo Mật Website WordPress 5
Mạng cơ bản

Dùng W7SFW Để Chống Virus Và Bảo Mật Website WordPress

11/03/2026
ung dung cau nguyen iran bi hack
Tin tức

Ứng dụng cầu nguyện của Iran bị hack, gửi thông điệp kêu gọi đầu hàng

01/03/2026
Cách đặt bảo mật 2 lớp cho ChatGPT 6
Kiến thức

Cách đặt bảo mật 2 lớp cho ChatGPT

06/10/2025
xoa spam comment wordpress
Code

Cách xóa nhanh tất cả Bình luận rác trên WordPress

14/07/2025 - Updated on 25/07/2025
Cách Active Key Sublime Text 4 - Tải Sublime Text 4 Full Key 7
Phần mềm máy tính

Cách Active Key Sublime Text 4 – Tải Sublime Text 4 Full Key

23/05/2025 - Updated on 25/07/2025
Cách tăng độ dài mã PIN trên Windows để nâng cao bảo mật 8
Windows 7/8/10/11

Cách tăng độ dài mã PIN trên Windows để nâng cao bảo mật

15/02/2025 - Updated on 25/07/2025
guest

guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
oldest
newest
Inline Feedbacks
View all comments

Liên hệ Quảng Cáo

Lien he AnonyViet

Bài viết mới

cách vừa làm việc vừa xem phim

Cách vừa làm việc vừa xem phim mà không lo bị sếp phát hiện

by Thanh Kim
04/04/2026
0

key Driver Booster 13 Pro

Share key Driver Booster 13 Pro miễn phí 2026

by Thanh Kim
03/04/2026
0

cách phát hiện mã độc trong file APK

Cách phát hiện mã độc trong file APK trên Android

by Thanh Kim
02/04/2026
0

Đánh giá Samsung Galaxy S25 sau 1 năm: Liệu "quái vật" hiệu năng có còn "phong độ"? 2

Đánh giá Samsung Galaxy S25 sau 1 năm: Liệu “quái vật” hiệu năng có còn “phong độ”?

by AnonyViet
01/04/2026
0

Giới thiệu

AnonyViet

AnonyViet

Nơi chia sẻ những kiến thức mà bạn chưa từng được học trên ghế nhà trường!

Chúng tôi sẵn sàng đón những ý kiến đóng góp, cũng như bài viết của các bạn gửi đến AnonyViet.

Hãy cùng AnonyViet xây dựng một cộng đồng CNTT lớn mạnh nhất!

Giới thiệu

AnonyViet là Website chia sẻ miễn phí tất cả các kiến thức về công nghệ thông tin. AnonyViet cung cấp mọi giải pháp về mạng máy tính, phần mềm, đồ họa và MMO.

Liên hệ

Email: support[@]anonyviet.com

1409 Hill Street #01-01A
Old Hill Street Police Station
Singapore 179369

 

DMCA.com Protection Status

Bình luận gần đây

  • Nhật trong Hướng dẫn cài Google TV lên USB để biến PC thành TV
  • cisad trong Share key Driver Booster v13 Pro miễn phí 6 tháng
  • Huy trong Hướng dẫn đăng ký Google Colab Pro 1 Năm Miễn Phí
  • phamphat trong Cách chạy OpenClaw bằng Crawbot: tiết kiệm chi phí
  • AnonyViet trong Hướng dẫn cài OpenClaw – AI Trợ lý cá nhân trên máy tính
  • Sơn trong Hướng dẫn cài OpenClaw – AI Trợ lý cá nhân trên máy tính
  • Hieu trong Share miễn phí bộ 03 Combo khóa học tự học tiếng Anh giao tiếp
  • 45555 trong Sự trỗi dậy của “Người ngoài hành tinh”: Alienware Aurora AC16250 “Vũ khí” tối thượng định hình Gaming năm 2026
  • 45555 trong Cách làm mờ ảnh trên iPhone sau khi chụp cực đơn giản
  • vatuan13 trong Hướng dẫn cài OpenClaw – AI Trợ lý cá nhân trên máy tính
  • vatuan13 trong Hướng dẫn thiết lập định vị giả trên Zalo
  • AnonyViet trong Hướng Dẫn Cấu Hình OpenClaw Trên VPS Ubuntu 2.5G RAM (giá chỉ 18$/năm)
  • hùng lê trong Hướng Dẫn Cấu Hình OpenClaw Trên VPS Ubuntu 2.5G RAM (giá chỉ 18$/năm)
  • Kelvin trong Hướng dẫn thi chứng chỉ bảo mật CTIGA miễn phí 100%
  • Minh trong Hướng dẫn kết nối OpenClaw với Whatsapp
  • AnonyViet trong Hướng Dẫn Cấu Hình OpenClaw Trên VPS Ubuntu 2.5G RAM (giá chỉ 18$/năm)
  • congdk trong Hướng Dẫn Cấu Hình OpenClaw Trên VPS Ubuntu 2.5G RAM (giá chỉ 18$/năm)
  • AnonyViet trong Hướng dẫn cài OpenClaw – AI Trợ lý cá nhân trên máy tính
  • AnonyViet trong Hướng dẫn cài OpenClaw – AI Trợ lý cá nhân trên máy tính
  • Tran Minh trong Hướng dẫn cài OpenClaw – AI Trợ lý cá nhân trên máy tính
kết quả xổ số hôm nay U888 33win Ae888 kubet kubet 8kbet 99ok trang chủ sc88 xin88 good88 kubet fm88 kubet thailand vip66 xoso66 https://tp88fun.com/ hello88 qq88 Xoso66 Vip66 hitclub bong99 XOSO66 new882.info Thabet fun88 nhà cái uy tín sunwin sunwin rikvip hitclub sunwin go88 12bet v9bet betvisa betvisa vin777 vin777 ee88 bet88 abc8 c54 https://keonhacai.fund/ sunwin Xoso66 58win fun88.supply EE88 https://da88.design/ https://fun88.supply/ F8BET80 https://q23win.com/ u888 8xbet W88 link 58win 58WIN https://bbet88b.com/ OK9 SHBET https://xx88.center/ vswin 789PCOM NHÀ CÁI MMOO TT88COM GO 99 RR88 ABC8 https://nowgoal.ws/ https://tylekeonhacai.me/ https://keonhacai.org.vc/ https://xx88.ac/ xx88.me.uk XN88 NOHU90 AF88 HZ88 https://xx88.asia/ 789f NOHU HITCLUB Sunwin 58WIN MV88 888NEW AZ888 PG99 TD88 12bet v9bet 789p NOHU90 Thabet vip66 7mcn hm88 xoso66 DA88 9BET https://daga.rocks https://c168.info/ LC88 Game SH BET https://jun88sr.com/ NOHU90 https://qq88pro.vip/ https://kjcgaming.com https://nohutm.com 6789 789Win https://go8.red/ 23win clubv 7m https://urr88.com/ Mig8 mcw casino hit club game bai tg88 kèo nhà cái 5 9 win Sunwin UU88 nổ hũ uy tín Go88 https://bancadoithuong.codes/ https://danhdeonline.blog/ Xocdia88 https://nhacaiuytin10.uk.com/ https://keonhacai88.tv/ https://keonhacai.loans/ https://gamebaidoithuong.io/ https://keonhacai.kiwi/ 789club sodo casino ok 8386 xx88 V9BET Sun52 https://918xxy.com/ https://go99bet.live/ https://tt88.ae.org/ kjc https://go99.mx/ 79king nhà cái MB66 Alo789 MV88 sc88 11uu vn23 88CLB Thabet nạp tiền qq88 sun win luck8 https://devmarks.io cwin Kkwin https://abc8.za.com V9bet 888slot Keonhacai5 ALO8.com F168 rikvip VIN777 Rik88 8kbet KUBET TT88 789club 789club AX88 xoso66 https://sc88.info/ HZ88 MMOO OPEN88 12bet https://nohu90s.asia go88 trang cá độ bóng đá https://nohuq.net/ https://s8inc.com/ SODO https://cm88.uk.net/ ko66 12bet https://cm88.gg/ 8us F168 Jun88 Jun88 fly88 12bet 8DAY https://f168.today/ Vip66 TẢI SUNWIN https://open88seo.com/ Luck8 winvn RED88 VIC88 F168 keobongda.one/ Jun88 https://keonhacaitop.com/ hytw3339 Kết quả bóng đá open88 https://sc88.market/ trang chủ MB66 az888 WIN678 https://789betlol.com/ F168 12bet SH BET vic88 red88 tỷ lệ nhà cái game nổ hũ game bài

©2026 AnonyViet - Chúng tôi mang đến cho bạn những kiến thức bổ ích về CNTT

No Result
View All Result
  • Tin tức
  • Network
    • Mạng cơ bản
    • Hyper-V
    • Linux
    • Windown Server 2012
  • Security
    • Basic Hacking
    • Deface
    • Kali Linux / Parrot
    • SQL Injection
  • Thủ thuật
    • Khóa Học Miễn Phí
    • Code
    • Mẹo Vặt Máy Tính
    • Facebook
    • Windows 7/8/10/11
    • Đồ Họa
    • Video
  • Software
    • Phần mềm máy tính
    • Phần mềm điện thoại
  • Tin học văn phòng
  • Kiến thức
  • MMO
    • Advertisers – Publishers
    • Affiliate Program
    • Kiếm tiền bằng điện thoại
    • Pay Per Click – PPC

©2026 AnonyViet - Chúng tôi mang đến cho bạn những kiến thức bổ ích về CNTT

wpDiscuz