Tải bản đầy đủ (.docx) (23 trang)

Giải ngân hàng An toàn ứng dụng Web

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (234.39 KB, 23 trang )

Đề cương ôn tập môn An toàn ứng dụng web và CSDL – Lớp D16AT
Phần I. Lý thuyết

1. 10 nguy cơ và lỗ hổng bảo mật hàng đầu trong các ứng dụng Web theo OWASP
2017 A1 Injection (Chèn mã)...........................................................................................1
2. Các dạng tấn công XSS và các biện pháp phòng chống.........................................3
3. Tấn công CSRF và các biện pháp phòng chống....................................................10
4. Tấn công chèn mã SQL và các biện pháp phòng chống.......................................10
5. Các phương pháp xác thực trong ứng dụng web, điểm yếu và phòng chống.....13
6. Các điểm yếu trong quản lý phiên và các biện pháp bảo mật phiên làm việc....16
7. Các lỗ hổng trong cấu hình và phần mềm máy chủ web và phòng chống..........19
8. Các vấn đề và các biện pháp bảo mật trình duyệt web........................................23
9. Các yêu cầu bảo mật cơ sở dữ liệu, mô hình tổng quát bảo mật cơ sở dữ liệu và
các lớp bảo mật cơ sở dữ liệu........................................................................................25
10.

Bảo mật các đối tượng trong CSDL....................................................................28

11.

Sao lưu và khôi phục dự phòng CSDL................................................................28

12.

Khái quát về kiểm toán CSDL và các dạng kiểm toán CSDL..........................32

Phần II. Bài tập
Nhận dạng tấn công chèn mã SQL: cho đoạn mã SQL, phân tích điểm yếu và khả năng
xảy ra tấn công chèn mã SQL. Cho ví dụ minh họa cụ thể. Đề ra biện pháp khắc phục/sửa
chữa.
Ví dụ 1: Cho câu lệnh SQL sau:


SELECT * FROM tbl_users WHERE username = '" + username + '" AND password='" +
password+"'"
trong đó username và password là dữ liệu đầu vào lấy từ HTML form. Hãy phân tích các
khả năng câu lệnh trên bị tấn công chèn mã SQL? Cho một ví dụ minh họa với mỗi khả
năng.
Ví dụ 2: Cho trang web tìm sản phẩm sử dụng câu lệnh SQL sau để tìm kiếm sản phẩm:
Nguyễn Minh Đức|1


"SELECT * FROM tbl_sanpham WHERE tensanpham like '%" + tu_khoa + "%'"
trong đó tbl_sanpham là bảng lưu thông tin sản phẩm và tu_khoa là từ khóa tìm kiếm
người dùng cung cấp từ HTML form. Hãy phân tích các khả năng trang web trên bị tấn
công chèn mã SQL với các dữ liệu khác nhau cung cấp từ người dùng? Cho một ví dụ
minh họa với mỗi khả năng.
Bài làm
1. 10 nguy cơ và lỗ hổng bảo mật hàng đầu trong các ứng dụng Web theo OWASP
2017 A1 Injection (Chèn mã)
A1 Chèn mã là dạng lỗ hổng bảo mật cho phép tin tặc chèn mã vào dữ liệu gửi đến
và được thực hiện trên hệ thống nạn nhân. Dạng tấn công phổ biến và nghiêm
trọng nhất.
Ví dụ dăm ba lỗ hổng: Buffer overflow (Tràn bộ đệm), SQL injection (chèn mã
SQL), XPath/XQuery injection (chèn mã XPath/XQuery), LDAP lookups / injection
(chẽn mã LDAP) và Shell command injection (chèn các lệnh shell).
A2 Broken Authentication and Session Management (Xác thực và quản phiên yếu)
Nếu các khâu xác thực và trao quyền (thường dung trong web) không đủ mạnh
thì đó là lỗ hổng để kẻ tấn công truy nhập đánh cắp thông tin. Nếu phiên (Session)
không được quản lý chặt chẽ, kẻ tấn công có thể lợi dụng để chiếm và điều khiển
phiên làm việc của người dùng.
Chuỗi nhận dạng phiên (ID) lên địa chỉ URL mà không mã hóa: />A3 Cross-Site Scripting (XSS) (Lỗi XSS) XSS là dạng tấn công vào trình duyệt
người dùng. Kẻ tấn công chèn mã script (thường là mã javascript) vào các trang

web có lỗi XSS. Khi người dùng mở các trang này thì mã script của kẻ tấn công
được thực hiện, giúp đánh cắp các thông tin lưu trong trình duyệt người dùng.
A4 Broken Access Control (Điều khiển truy nhập yếu) Các kiểm soát truy nhập
đối với người dùng không được thực hiện chặt chẽ. Kẻ tấn công có thể truy nhập
trái phép vào các tính năng, dữ liệu, như truy nhập, hoặc sửa đổi dữ liệu của người
dùng khác, xem các file nhạy cảm, thay đổi quyền truy nhập.
A5 Security Misconfiguration Lỗi cấu hình an ninh là dạng lỗ hổng thiết lập
quyền truy nhập vào các trang không đúng chuẩn, cho phép kẻ tấn công có thể
Nguyễn Minh Đức|2


truy nhập trái phép vào các trang, các thư mục, hoặc tải và thực hiện các file mã
độc trên hệ thống.
- Lỗi quyền truy nhập files
- Lỗi thực hiện các trang
- Lỗi liệt kê các files trong thư mục
- Lỗi cho phép tải lên và thực hiện các file mã chương trình.
A6 Sensitive Data Exposure (Rò rỉ dữ liệu nhạy cảm) Nhiều ứng dụng web không
có các cơ chế đủ mạnh để bảo vệ các dữ liệu nhạy cảm, như thông tin thẻ tin
dụng, số an sinh xã hội và thông tin xác thực người dùng. Kẻ tấn công có thể đánh
cắp, hoặc chỉnh sửa các thông tin nhạy cảm thể lạm dụng, hoặc trục lợi. Cần có
các cơ chế bổ sung để bảo vệ các thông tin nhạy cảm, như mã hóa và hạn chế
quyền truy nhập vào các files chứa thông tin nhạy cảm.
A7 Insufficient Attack Protection (Thiếu các cơ chế bảo vệ) Một lượng lớn các ứng
dụng và các giao diện lập trình ứng dụng (API) không có khả năng phát hiện,
ngăn chặn và đáp trả các dạng tấn công tự động và thủ công. Các cơ chế bảo vệ
cần không chỉ thực hiện việc kiểm tra dữ liệu đầu vào, mà còn cần phải tự động
phát hiện, ghi log, đáp trả và thậm chí có khả năng ngăn chặn các nỗ lực tấn
công. Các bản vá cho các ứng dụng cần được triển khai nhanh chóng để ứng
dụng được bảo vệ trước các dạng tấn công.

A8 Cross-Site Request Forgery (CSRF) (Lỗi CSRF) CSRF là dạng tấn công người
dùng web, lợi dụng cơ chế tự động đăng nhập của một số website. Kẻ tấn công
lừa người dùng thực hiện các đoạn mã độc, nhúng trong các trang web bình
thường trong ngữ cảnh người dùng đang ở trong phiên làm việc với website. Mã
độc chạy trên trình duyệt của người dùng đang ở trong phiên làm việc có thể giúp
hacker thực hiện các giao dịch hoặc đánh cắp thông tin.
A9 Using Components with Known Vulnerabilities (Sử dụng các thành phần chứa
lỗ hổng đã biết) Các thành phần, bao gồm các thư viện, các framework và các
mô đun phần mềm hầu như được chạy với quyền truy nhập đầy đủ như người
dùng kích hoạt ứng dụng. Nếu một thành phần có chứa lỗ hổng bị khai thác có thể
gây ra việc mất dữ liệu, hoặc máy chủ có thể bị chiếm quyền điều khiển. Các ứng
dụng sử dụng các thành phần chứa lỗ hổng đã biết có thể làm suy giảm khả năng
phòng vệ của ứng dụng và cho phép thực hiện nhiều loại tấn công lên hệ thống.
A10 Underprotected APIs (Các API không được bảo vệ) Các ứng dụng hiện đại liên
quan đến các máy khách “béo” và các API, như JavaScript ở trình duyệt và các ứng
Nguyễn Minh Đức|3


dụng di động. Các máy khách này thường kết nối đến một API nào đó (như
SOAP/XML, REST/JSON, RPC, GWT,...). Các API này thường không được bảo
vệ và chứa đựng nhiều lỗ hổng bảo mật. 1
2. Các dạng tấn công XSS và các biện pháp phòng chống
Tấn công Cross-Site Scriting phổ biến nhất từ khi web hỗ trợ javascript vào các ứng
dụng web.
 Nhúng trong trang web => chạy trong lòng trang web => Công cụ quát hệ
thống chịu => truy nhập đến thông tin nhạy cảm của người dùng.
 Thường xuất hiện khi cho phép người dùng nhập dữ liệu và sau đó hiển thị
lên trang.
 Đánh cắp Cookie, giả mạo lấy mật khẩu, ...
Stored XSS


Reflected XSS

DOM-based XSS

Stored XSS
thường được
nhúng vào
trong nội dung
của trang web
và được lưu trữ
trong cơ sở dữ
liệu của website.

Reflected XSS thường
xuất hiện khi dữ liệu do
người dùng cung cấp được
sử dụng bởi script trên
máy chủ để tạo ra kết quả
và hiển thị lại ngay cho
người dùng.
Dạng tấn công XSS này
thường xuất hiện trên các
máy tìm kiếm, hoặc các
trang có tính năng tìm
kiếm, như biểu diễn trên

Kịch bản tấn công
giống Reflected XSS,
DOM – based XSS:

HTML lưu sẵn trong
máy người dùng, bị
XSS, tấn công sẽ
thực hiện trực tiếp
trên máy người dùng.

Các website có
nguy cao bị tấn
công Stored
XSS là cách
trang cho phép
đăng nội dung
và cho phép
nhiều người xem
nội dung đó.

Kịch bản:
Website có thể

Hình thức tấn công
Reflected XSS thường gặp
nhất là kẻ tấn công gửi và
bẫy người dùng truy
nhập một URL khai thác
có chứa mã tấn công XSS
thông qua email hay tin
nhắn.
Kịch bản:
Ví dụ trang Nào Đó bị


Trang có đoạn Please
fill in the form. Có
Nguyễn Minh Đức|4


đăng thông điệm
bị XSS, Ai Đấy
đăng 1 bài viết
câu view khéo
léo nhúng 1 mã
XSS và bài viết,
mọi người vào
xem sẽ bị lấy
cắp thông tin gửi
về cho Ai Đấy.

Reflected XSS và Ai Đó
tạo ra 1 trang aido.net.
Một Bạn truy cập vào
trang web Nào Đó có ID
Cookie riêng. Ai Đó sẽ
giử cho Một Bạn link (lấy
cookie và chuyển về trang
aido.net) qua message
hoặc email. Một Bạn truy
cập vào, Cookie bị Ai Đó
lấy và chiếm phiêm làm
việc.

địa chỉ riêng. Kẻ tấn

công sẽ tạo ra form
lựa chọn giới tính
thay cho Please fill in
the form. Nếu người
dùng chọn giới tính,
đoạn XSS sẽ được
thực hiện. Ăn cắp
cookie của người
dùng bằng hàm
nhúng trong đoạn mã
chuyển về máy kẻ tấn
công

Các biện pháp phòng chống
Bộ lọc XSS (XSS Filter) là kỹ thuật lọc các từ, cú pháp nguy hiểm. Phải luôn
được cập nhập thường xuyên. Cần lưu ý là các bộ lọc dữ liệu nhập phải được thực
hiện trên máy chủ (server-side) do các bộ lọc dữ liệu nhập được thực hiện trên máy
khách có thể bị vô hiệu hóa dễ dàng.
Thoát khỏi XSS (XSS Escape) là kỹ thuật cho phép vô hiệu hóa tấn công XSS
bằng cách thay thế các ký tự riêng (Character Escaping) của HTML/script để
chuyển các đoạn mã có thể thực hiện thành dữ liệu thông thường. Theo đó, kẻ tấn
công vẫn có thể chèn mã XSS vào trang web, nhưng trình duyệt của người dùng
không thực hiện các đoạn mã này cho chúng đã bị chuyển thành dữ liệu thông
thường.
Nên kết hợp cả 2 để đặt hiệu quả.
3. Tấn công CSRF và các biện pháp phòng chống
Kịch bản: CSRF (Cross-Site Request Forgery) là dạng tấn công bẫy nạn nhân tải
một trang web có chứa yêu cầu độc hại.
Kịch bản A muốn chuyển 100k cho B quan TPbank. Mã chuyển là
acct=B&amount=100

Giả sửa A đang đăng nhập trong TPbank. C tạo acct=C&amount=1000000 gửi cho
A, lừa A kích vào. A có thể biết đang chuyển tiền nên C dấu URL và 1 cái ảnh
width="1" height="1"
Nguyễn Minh Đức|5


Phòng chống tấn công CSRF:
- Sử dụng "chuỗi đồng bộ" cho mỗi thao tác quan trọng. Máy chủ tạo và
kiểm tra chuỗi để xác thực.
- Sử dụng chuỗi xác thực CAPTCHAR. (gửi ảnh chữ - điềm: phân biệt người
và robot) 1977
- Sử dụng Viewstate (ASP.NET)
Viewstate cho biết trạng thái của trang khi gửi yêu cầu lên máy chủ - kẻ tấn
công khó làm giả.
- Sử dụng thư viện chuẩn để phòng chống CSRF: OWASP CSRF Guard, PHP
CSRF Guard, .Net CSRF Guard.
- Sử dụng giao thức OTP/Challenge-Response – password dùng một lần cho
các thao tác quan trọng.
4. Tấn công chèn mã SQL và các biện pháp phòng chống
Tấn công chèn mã SQL (SQL Injection) là một kỹ thuật cho phép kẻ tấn công chèn
mã SQL vào dữ liệu gửi đến máy chủ và cuối cùng được thực hiện trên máy
chủ cơ sở dữ liệu.
(1) vượt qua các khâu xác thực người dùng,
(2) chèn, sửa đổi, hoặc xóa dữ liệu,
(3) đánh cắp các thông tin trong cơ sở dữ liệu
(4) chiếm quyền điều khiển hệ thống máy chủ cơ sở dữ liệu.
Có 2 nguyên nhân - thường sảy ra ở web có kết nối tới server
- Dữ liệu đầu vào từ người dùng hoặc từ các nguồn khác không được kiểm tra
hoặc kiểm tra không kỹ lưỡng;
- Sử dụng các câu lệnh SQL động trong ứng dụng, trong đó có thao tác nối dữ liệu

người dùng với mã lệnh SQL gốc.
SELECT * FROM tbl_accounts WHERE username='aaaa' OR 1=1--' AND
password='aaaa'
Truy nhập vào tài khoản aaaa 1=1-- luôn đúng.
Xóa: Samsung Galaxy S8';DELETE FROM tbl_products;-- câu lệnh thành:
SELECT * FROM tbl_products WHERE keyword like '%Samsung Galaxy
S8';DELETE FROM tbl_products;--%'
Tương tự với: UPDATE, INSERT
Chèn thêm: Galaxy S8';INSERT INTO tbl_administrators (username, password)
VALUES ('attacker', 'abc12345');--

Nguyễn Minh Đức|6


Phòng chống: (kết hợp các biện pháp)
- Kiểm tra và lọc dữ liệu đầu vào:
+ Kiểm tra tất cả các dữ liệu đầu vào, đặc biệt dữ liệu nhập từ người dùng và từ
các nguồn không tin cậy;
+ Kiểm tra kích thước và định dạng dữ liệu đầu vào;
+ Tạo các bộ lọc để lọc bỏ các ký tự đặc biệt (như *, ‘, =, --) và các từ khóa của
ngôn ngữ SQL (SELECT, INSERT, UPDATE, DELETE, DROP,....) mà kẻ tấn công
có thể sử dụng:
- Sử dụng thủ tục cơ sở dữ liệu (stored procedures) và cơ chế tham số hóa dữ liệu:
+ Đưa tất cả các câu truy vấn (SELECT) và cập nhật, sửa, xóa dữ liệu (INSERT,
UPDATE, DELETE) vào các thủ tục. Dữ liệu truyền vào thủ tục thông qua các
tham số, giúp tách dữ liệu khỏi mã lệnh SQL
+ Hạn chế thực hiện các câu lệnh SQL động trong thủ tục;
+ Sử dụng cơ chế tham số hóa dữ liệu hỗ trợ bởi nhiều ngôn ngữ lập trình web như
ASP.NET, PHP và JSP.
- Thiết lập quyền truy nhập người dùng cơ sở dữ liệu:

+ Không cho người dùng có quyền truy cập hệ quản trị cơ sở dữ liệu truy nhập
và hệ thống, chỉ cho quản trị thôi.
+ Chia nhóm người dùng, chỉ cấp quyền vừa đủ để truy nhập các bảng biểu, thực
hiện câu truy vấn và chạy các thủ tục.
+ Không cấp quyền thực hiện các câu truy vấn, cập nhật, sửa, xóa trực tiếp trên các
bảng dữ liệu. Thủ tục hóa tất cả các câu lệnh và chỉ cấp quyền thực hiện thủ tục.
+ Cấm hoặc vô hiệu hóa (disable) việc thực hiện các thủ tục hệ thống (các thủ tục
cơ sở dữ liệu có sẵn) cho phép can thiệp vào hệ quản trị cơ sở dữ liệu và hệ điều
hành nền.
- Sử dụng các công cụ rà quét lỗ hổng chèn mã SQL: SQLMap, hoặc Acunetix
Vulnerability Scanner.
5. Các phương pháp xác thực trong ứng dụng web, điểm yếu và phòng chống
Xác thực trong ứng dụng web
Tên truy nhập (username) và mật khẩu (password) là chuẩn thực tế cho xác thực
trong các ứng dụng web: xác thực của giao thức HTTP (Built-in HTTP
Authentication), đăng nhập một lần (Single Sign On – SSO) và các hệ xác thực tự
phát triển. Một số trường hợp đặc biệt, các token phần cứng hoặc phần mềm thêm
để tăng độ an toàn.
Xác thực sử dụng các đặc điểm sinh trắc học đắt và phức tạp.

Nguyễn Minh Đức|7


a) Xác thực của giao thức HTTP
Tương đối yếu – hạn chế dung.
Basic access authentication
được sử dụng khi trình duyệt yêu
cầu truy nhập một tài nguyên được
bảo vệ, như 1 thư mục hoặc file trên
máy chủ web.

Máy khách gửi yêu cầu – Máy chủ gửi
form (401) – máy khách nhập tài khoản –
mã hóa base64 – máy chủ xác nhận cho
vào hay không cho vào.
Ưu điểm là đơn giản.

Digest access authentication
về cơ bản tương tự Basic access
authentication ở lưu trình xử lý.

Điểm khác: mật khẩu được mã hóa bằng
hàm băm MD5.

Nhược điểm base64 dê giải mã, mật khẩu
lưu trong cookie
b) Đăng nhập một lần
Đăng nhập một lần (Single Sign On - SSO) là cho phép người dùng đăng nhập một
lần thông qua một giao diện xác thực để truy nhập vào nhiều hệ thống, hoặc dịch
vụ khách nhau
VD: Sau khi đăng nhập, người dùng có thể truy nhập hầu hết các dịch vụ của
Google, như GMail, Youtube, Google Talk, Google Adwords,…
c) Các hệ xác thực tự phát triển
Ưu điểm là khả năng tùy biến cho phù hợp với yêu cầu của ứng dụng cụ thể.
Gồm các thành phần:
- Cơ sở dữ liệu tài khoản.
- Cơ sở dữ liệu quản lý quyền truy nhập cho người dùng, nhóm người dùng.
- Trang đăng nhập, trang đăng xuất.
- Thành phần kiểm tra trạng thái đăng nhập và quyền truy nhập.
- Thành phần kiểm tra và quản lý phiên làm việc.
d) Phong chống

Nguyễn Minh Đức|8


Mật khẩu:
Thiết lập độ dài mật khẩu tối thiểu
Đảm bảo độ khó của mật khẩu (sử dụng nhiều bộ ký tự)
Không lưu mật khẩu ở dạng rõ (nên dùng dạng băm mà ko phải là dạng mã
hóa sử dụng khóa)
Đổi mật khẩu định kỳ
Hạn chế dùng lại mật khẩu
Không dùng mật khẩu giống tên người dùng
Cho phép khóa (disable) tài khoản.
6. Các điểm yếu trong quản lý phiên và các biện pháp bảo mật phiên làm việc
Các điểm yếu trong quản lý phiên
Session ID hay token là tham số quan trọng nhất của mỗi phiên làm việc web. Có
hai dạng điểm yếu:
Các điểm yếu trong sinh token phiên:
- Token phiên có nghĩa: tên, email, xáo lộn => dễ đoán
- Token phiên dễ đoán: dễ phân tích => nắm được quy luật sinh token => cướp
phiêm làm việc.
+ Token được che dấu thứ tự
+ Token phụ thuộc thời gian
+ Token được tạo sử dụng số ngẫu nhiên yếu.
Các điểm yếu trong sử dụng token phiên:
- Rò rỉ token trên mạng: không mã hóa, trong HTTPS có thể bị mất.
- Rò rỉ token trong ghi log: ghi log ghi cả token, log của proxy, trình duyệt hoặc
máy chủ.
- Lỗ hổng trong ánh xạ token sang phiên: 1 token làm việc được trên nhiều máy,
người dùng đổi máy quên ko xóa token, kẻ tấn công sẽ lợi dụng. token tĩnh, tuần tự,
dễ đoán có nguy cơ cao hơn.

- Lỗ hổng trong kết thúc phiên: không có đăng xuất, hoặc có nhưng không hủy
token, hoặc xóa token trong 1 khoảng thời gian.
- Token bị đánh cắp từ phía máy khách: bởi XSS, CSRF lấy token
Nguyễn Minh Đức|9


- Không giới hạn phạm vi sử dụng cookie: Máy chủ yêu cầu token qua cookie, có
thể thay đổi miền gửi cookie từ miền con sang miền cha, nếu gửi đến miền cha thì
sẽ gửi đến tất cả miền con => dùng sai mục đích.
Các biện pháp bảo mật
Sinh các token phiên “mạnh”:
Miền giá trị đủ lớn, ngẫu nhiên, khó đoán, độ dài lớn, không có nghĩa, không
phụ thuộc vào thời gian.
Bảo vệ token trong cả vòng đời:
Token trao đổi an toàn trong HTTPS (chuyển sang HTTP không an toàn)
Không cho vào URL, cho vào môi trường ẩn và dùng POST
Thêm đăng xuất: xóa all phiên.
Set thời gian hết hạn phiên sau 1 khoảng thời gian không dùng.
1 người dùng – 1 phiên làm việc. Tạo phiên mới, phiên cũ sẽ tự xóa.
Thiết lập chặt chẽ cho các cookie trong miền (domain) và đường dẫn path
Xác thực 2 lớp với giao dịch quan trọng (CSRF). Ngăn chặn XSS, CSRF
Dùng token nhứng ẩn trong các trường ẩn để xác thực trong 1 số trường hợp
đặc biệt
Ghi log, Giám sát và cảnh báo:
Quản lý token và thông tin nhạy cảm cần giám sát, ghi log để cánh báo hành
động bất thường. Cả token không hợp lệ vì bị vét cạn.
- Thông báo cho người dùng bất thường: thiết bị lạ, vị trí lạ, đổi mật khẩu
- Kết thúc phiên kiểu phản ứng: thấy có bất thường, có dấu hiệu bị tấn công sẽ yêu
cầu xác thực.
- Yêu cầu xác thực mỗi câu truy vẫn => làm chậm mọi tấn công.

7. Các lỗ hổng trong cấu hình và phần mềm máy chủ web và phòng chống
Các lỗ hổng trong cấu hình máy chủ web
Cấu hình máy chủ web thiết lập các tùy chọn cho phép điều khiển hoạt động của
máy chủ web, theo đó có ảnh hưởng đến tất cả các website chạy trên máy chủ đó.
3 điểm yếu
Các tài
khoản quản
trị ngầm
định
Các nội
dung ngầm
định

tài khoản root, mk dễ hoặc không có

Nhiều phần máy chủ web được xuất xưởng kèm theo các
nội dung ngầm định. Có thể gây nguy hiểm:
- Các tính năng gỡ rối và kiểm thử cho người quản trị.
Nguyễn Minh Đức|10


- Các tính năng mẫu được thiết kế cho các công việc dùng
chung.
- Một số tính năng nội bộ, vô tình để người ngoài có thể
truy nhập.
- Tài liệu hướng dẫn sử dụng, hoặc quản trị máy chủ web.
- Các tính năng mẫu (Sample features) dành cho người
quản trị.
Liệt kê nội
dung thư

mục

Các phương
thức nguy
hiểm

Khi máy chủ web nhận được yêu cầu truy nhập là 1 thư
mục:
- Nếu có (index.html, default.htm,...), trang ngầm định được
gửi cho trình duyệt;
- Nếu không tồn tại trang ngầm định:
+ Trả về thông báo lỗi mã 403 (cấm truy nhập) nếu không
cho phép liệt kê thư mục;
+ Trả về danh sách các file trong thư mục nếu cho phép liệt
kê thư mục. => tìm kiếm thông tin hữu ích.
- PUT: cho phép tải các file lên máy chủ;
- DELETE: cho phép xóa một tài nguyên (file/thư mục)
- COPY: cho phép sao chép một tài nguyên
- MOVE: cho phép chuyển vị trí một tài nguyên
- SEARCH: cho phép tìm kiếm trên các file/thư mục.
Chuẩn: GET & POST

Bảo mật máy chủ web bằng cấu hình
Người giám sát không lơ là là được, giám sát chặt khâu 1 thiết lập cấu hình. Các
bước cơ bản.
- Tìm hiểu tài liệu để nắm vững phương thức hoạt động của máy chủ web sử
dụng và các các thiết lập cấu hình;
- Thiết lập các tham số cấu hình theo các hướng dẫn tăng cường an ninh cho
máy chủ và các ứng dụng web.
- Đổi tên và đổi mật khẩu các tài khoản quản trị ngầm định (root). Có thể khóa

hoặc xóa nếu cần.
- Chặn truy nhập từ mạng công cộng đến các giao diện quản trị. Giới hạn truy
nhập đến các giao diện quản trị từ mạng nội bộ hoặc địa chỉ IP cụ thể bằng ACL
hoặc tường lửa.
- Loại bỏ các nội dung ngầm định, nếu cần:
+ Tính năng cần thiết thì phải tăng bảo mật.
+ Cấm liệt kê nội dung thư mục, có trang ngầm định index.html, show file tùy
trường hợp.
- Khóa tất cả các phương thức HTTP không sử dụng.
Nguyễn Minh Đức|11


- Đặt quyền truy nhập vào các thư mục: đọc, ghi, không cấp quyền thực hiện.
Các lỗ hổng trong phần mềm máy chủ web
Lỗ hổng
tràn bộ
đệm
Các lỗ hổng
cho phép
duyệt
đường dẫn

Lỗ hổng
trong mã
hóa và
chuẩn hóa

Điển hình và nghiêm trọng nhất, cho phép tin tặc chèn và
thực hiện mã độc từ xa, kiểm soát hệ thống.
(Path traversal vulnerabilities) khi các ứng dụng web thực

hiện việc đọc, hoặc ghi vào hệ thống file dựa trên các
tham số do người dùng cung cấp. Nếu kiểm soát không
chặt, tin tặc đánh cắp mật khẩu, log, các dữ liệu nhạy cảm,
hoặc ghi đè lên các dữ liệu quan trọng, có thể chiếm quyền
điều khiển hệ thống.
Biện pháp: hạn chế đọc ghi với tham số cho người dùng
cung cấp, loại bỏ //, \\ ; giới hạn truy nhập file.
Quá trình mã hóa và chuẩn hóa có nhiều sai sót, gây ra lỗ
hổng:
Ví dụ: khi mã hóa dấy ?, rồi chuyển qua giải mã để đọc file,
quá trình này bị lỗi nhầm lẫn nên thành đọc file ?. file này
không hợp lệ nên hệ thống sẽ show hết các file ra.

Đảm bảo an toàn phần mềm máy chủ web
1. Lựa chọn phần mềm có tên tuổi: chất lượng và được hỗ trợ khi bị lỗi.
2. Cần update thường xuyên, cập nhập bản vá, cập nhập các lỗ hổng mới.
3. Bỏ tính năng không cần thiết, không sử dụng.
4. Đổi tên các tính năng ngầm định, thành phần không cần thiết.
5. Quyền hạn chế - tối thiểu.
6. Phòng vệ theo chiều sâu – nhiều lớp.
8. Các vấn đề và các biện pháp bảo mật trình duyệt web
Các vấn đề bảo mật trình duyệt web - 3 nhóm - liên quan đến nhau
các
phương
thức tấn
công

Mục tiêu

- Hệ điều hành bị hack, mã độc đọc không gian nhớ của

web.
- Hệ điều hành bị nhiễm mã độc chạy như tiến trình nền, mã
độc đọc và sử không gian nhớ.
- Trình duyệt bị tấn công
- Các trình cắm của trình duyệt bị tấn công.
- Giao tiếp mạng của trình duyệt bị chặn bên ngoài máy.
- Quảng cáo, tiếp thị
Nguyễn Minh Đức|12


- Ăn cắp thông tin cá nhân.
- Theo dõi, phân tích sử dụng web của người dùng.
- Cài virut, phần mềm quảng cáo, gián điệp, Trojan, …
- Dùng tool, nhấn like, click chuột lừa đảo.
các tính
năng cung
cấp bởi
trình
duyệt
chứa nguy
cơ bảo
mật

- Hỗ trợ ActiveX: ActiveX được hỗ trợ bởi Microsoft
Internet Explorer
- Hỗ trợ Java: Tính năng này cho phép chạy các chương
trình Java thông qua máy ảo JVM
.
- Hỗ trợ trình cắm (Plug-in/Add-on/Extension): là các
mô đun ngoài được cài bổ sung vào trình duyệt để cung cấp

thêm nhiều tính năng mới, tiện ích. Tăng giao diện tấn công, 1
số mã độc viết dưới dạng trình cắm.
- Các Cookie: XSS lấy cookie.
- JavaScript, VBScript (chỉ hỗ trợ trên Microsoft Internet
Explorer): Giúp tăng tính tương tác, nhưng có thể bị XSS.
Các biện pháp đảm bảo an toàn trình duyệt web
- nâng cao ý thức, kiến thức người dùng.
- Mặt kỹ thuật:
o Cấm cookie của bên thứ 3
o Cho phép hoặc cấm: ActiveX, Java, các trình cắm cụ thể, cookie,
javaScrip
o Cấu hình các thiết lập an ninh riêng tư
o Update trình duyệt
o Tiện ích cảnh báo
o Cài trình cắm cẩn trọng: giả mạo, cần hiểu rõ chi tiết.
o Hệ thống có: quét virut, cài đặt plug- in an ninh
o Cấu hình các thiết lập an ninh riêng tư, cấm vào trái phép CSDL
9. *Các yêu cầu bảo mật cơ sở dữ liệu, mô hình tổng quát bảo mật cơ sở dữ liệu

các lớp bảo mật cơ sở dữ liệu
Các yêu cầu bảo mật cơ sở dữ liệu
Bảo mật, hay an toàn cơ sở dữ liệu (Database security) là một tập hợp các thủ tục,
chuẩn, chính sách và công cụ được sử dụng để bảo vệ dữ liệu: đảm bảo bí mật –
toàn vẹn – sẵn dùng.
Tính bí mật: xác thực, trao quyền, vật lý, tường lửa. Đảm bảo chỉ người có quyền
mới được truy nhập.
Tính toàn vẹn: Tính ràng buộc dữ liệu. Chỉ người có quyền mới có thể sửa.
Nguyễn Minh Đức|13



Tính sẵn dùng: Hạ tầng mạng, năng lực các máy chủ. Đảm bảo người dùng hợp lệ
có thể truy cập trong bất cứ thời điểm nào.
Mô hình tổng quát và các lớp bảo mật cơ sở dữ liệu
Bảo mật cơ sở dữ liệu và các yếu tố liên quan
3 yếu
tố
Các
nhân
tố

Con người (people), Phần mềm (Software) và Dữ liệu (Data).
đe dọa
(Threats)

4 loại đe dọa csdl: con người (People) – nguy
hiểm nhất, mã độc (Malicious code), tai họa công
nghệ (Technological disasters) và từ tai họa tự
nhiên (Natural disasters).

rủi ro
(Risks)
lỗ hổng
(Vulnera
bilities)

4 loại lỗ hỏng: bao gồm lỗ hổng do lỗi người dùng
– hay sảy ra, rủi ro cao; lỗ hổng do thiết kế và lập
trình, lỗ hổng phần mềm và lỗ hổng do cài đặt và
cấu hình – hay sảy ra, rủi ro cao.
Mô hình bảo mật cơ sở dữ liệu tổng quát

gồm 7 lớp: lớp con người (People), lớp ứng dụng (Applications), lớp mạng
(Network), lớp hệ điều hành (Operating system), lớp hệ quản trị cơ sở dữ liệu
(DBMS), lớp file dữ liệu (Data files) và lớp dữ liệu (Data).
Khâu thực hiện (tương ứng với các lớp) bảo mật cơ sở dữ liệu gồm: Identification
(Nhận dạng rủi ro), Assessment (Đánh giá rủi ro), Design (Thiết kế các kiểm soát),
Implementation (Áp dụng các kiểm soát), Evaluation
(Đánh giá hiệu quả áp dụng) và Auditing (Kiểm toán). Kết quả khâu trước dùng để
điều chỉnh khâu sau.

Nguyễn Minh Đức|14


Các lớp bảo mật cơ sở dữ liệu
Con
người

- Hạn chế truy nhập vật lý đến phần cứng hệ thống và các tài
liệu;
- Xác thực người dùng: thẻ nhận dạng (ID card), PIN, mật khẩu,
sinh trắc học.
- Đào tạo người quản trị, người dùng về ý thức bảo mật và các
biện pháp bảo mật.
- Thiết lập các chính sách và thủ tục kiểm soát an ninh.

Ứng
dụng

- Xác thực người dùng truy nhập
- Áp dụng chính xác quy trình xử lý công việc;
- Đăng nhập một lần (Single Sing On) cho máy chủ cơ sở dữ liệu,

các ứng dụng, hoặc website có liên kết.
- Tường lửa;
- Dụng VPN bảo mật thông tin và dữ liệu trên đường truyền;
- Biệp pháp xác thực
- Xác thực người dùng;
- Phát hiện xâm nhập;

Mạng
HĐH

Nguyễn Minh Đức|15


File
data
Data

- Áp dụng chính sách quản lý mật khẩu chặt chẽ;
- Tài khoản người dùng.
- Quyền truy nhập file;
- Giám sát truy nhập file.
- Kiểm tra dữ liệu;
- Các ràng buộc dữ liệu;
- Mã hóa dữ liệu.

10.Bảo mật các đối tượng trong CSDL
Bảo mật các đối tượng trong cơ sở dữ liệu
Các đối tượng cơ bản: người dùng, bảng, khung nhìn, thủ tục và hàm.
Người sẽ truy cập đến các đối tượng còn lại thông qua quyền và chính sách nên cần
bảo vệ các đối tượng còn lại.

Các quyền truy nhập:
EXECUTE (quyền thực hiện) áp dụng với các thủ tục, hàm và trigger.
SELECT (chọn), INSERT (chèn), UPDATE (cập nhật), DELETE (xóa) áp dụng
bảng, khung hình.
CREATE (tạo mới), ALTER (sửa), DROP áp dụng với hầu hết CSDL.
Người dùng được gán (hệ truyền thống) vào 1 – 1 số nhóm vài trò (role) gồm 2
loại:
nhóm của máy chủ (Server roles) áp dụng trong cả hệ quản trị cơ sở dữ liệu
nhóm của cơ sở dữ liệu (Database role) chỉ áp dụng trong từng cơ sở dữ liệu.
1 người được cấp quyền đến 1 – n file.
1 filr được truy nhập từ 1 – n người dùng.
Cấp quyền truy nhập bằng giao diện – từ chối, hủy truy nhập:
Ví dụ cơ sở dữ liệu của SQL Server:
- GRANT <quyền truy nhập> ON <đối tượng> TO <người dùng>: cấp quyền
- DENY <quyền truy nhập> ON <đối tượng> TO <người dùng>: từ chối
- REVOKE <quyền truy nhập> ON <đối tượng> FROM <người dùng>: hủy quyền
truy nhập
11.Sao lưu và khôi phục dự phòng CSDL
Sao lưu cơ sở dữ liệu (Database backup) là thao tác tạo bản sao của một phần hoặc
toàn bộ cơ sở dữ liệu. Bản sao có thể được tạo và lưu trên cùng phương tiện lưu trữ
với cơ sở dữ liệu hoặc sử dụng một phương tiện lưu trữ riêng, như đĩa cứng, băng
từ, ổ mạng, hoặc đám mây.
Sao lưu định kỳ hoặc không tùy theo chính sách.
Mục đích: đảm bảo tính sẵn đùng và toàn vẹn.
Nguyễn Minh Đức|16


Tùy theo các yêu tố:
- Yêu cầu đảm bảo an toàn dữ liệu;
- Khả năng lưu trữ;

- Tải lên hệ thống khi thực hiện sao lưu;
- Kết hợp giữa sao lưu tại chỗ (on-site) và sao lưu ra ngoài (off-site).
Khôi phục dự phòng cơ sở dữ liệu (Database restore) là thao tác khôi phục lại cơ sở
dữ liệu sau các sự cố với 1 phần hoặc toàn bộ.
3 loại sự cố:
Hệ quản trị cơ sở dữ liệu (Instance failures):
do lỗi bên trong hệ quản trị CSDL, hệ điều hành. => hỏng, mất mát dữ liệu.
ứng dụng hoặc giao dịch (Application/Transaction failures):
Lỗi do xử lý dữ liệu. => hỏng, mất mát.
phương tiện lưu trữ (Media failures):
Lỗi hỏng phần cứng => mất 1 phần hoặc mất toàn bộ.
Sao lưu cơ sở dữ liệu
Theo đối tượng, có 3 dạng sao lưu: sao lưu cơ sở dữ liệu (Database backup), sao lưu
log giao dịch (Transaction log backup) và sao lưu các file (File backup).
Theo mức độ, có 2 dạng: sao lưu toàn bộ (Full backup) và sao lưu phần thay đổi
(Incremental/Differential backup).
Toàn bộ
Sao lưu toàn bộ tại thời điểm CSDL
đang hoạt động - lần sao lưu đầu tiên
Ưu: Khôi phục nhanh
Nhược: tốn time và dung lượng

Phần thay đổi
Chỉ sao lưu phần thay đổi trong
CSDL kể từ lần sao lưu gần nhất
Thời gian ngắn, dung lượng ít
Thời gian khôi phực dài hơn

Các mô hình khôi phục
Mô hình khôi phục (Recovery) là một thuộc tính của cơ sở dữ liệu điều khiển

phương pháp ghi log giao dịch, có hay không yêu cầu ghi log và các kiểu khôi phục
cơ sở dữ liệu hỗ trợ.
Microsoft SQL Server hỗ trợ 3 mô hình khôi phục
Simple
Khôi phục
đơn giản
Full

Chỉ cho phép 1 số thao tác có thể tạo log => không hỗ trợ sao
lưu, không hỗ trợ khôi phục theo thời điểm và theo trang.
Hỗ trợ khôi phục file - chỉ với file thứ cấp (chỉ đọc)
Tất cả các thao tác được ghi log đầy đủ, có hỗ trợ sao lưu log,
Nguyễn Minh Đức|17


Khôi phục
đầy đủ
Bulk_log
Khôi phục
theo khối

khôi phục mọi thao tác. (Theo thời điểm, theo trang, theo file)
Giống Full Không hỗ trợ khôi phục theo thời điẻm khi các thao
tác được ghi log tối thiểu.

Thực hiện sao lưu
BACKUP DATABASE { database_name | @database_name_var } TO
<backup_device> [ WITH { DIFFERENTIAL | <general_WITH_options> trong
đó: <backup_device>::= { { logical_device_name | @logical_device_name_var }
| { DISK | TAPE | URL} =

{ 'physical_device_name' |
@physical_device_name_var } }
Ví dụ: BACKUP DATABASE test_db to DISK = 'D:\backups\test_db.bak' thực hiện
sao lưu cơ sở dữ liệu có tên "test_db" ra file trên đĩa "D:\backups\test_db.bak".
Sao lưu log giao dịch và sao lưu file
File log giao dịch (transaction log) lưu một dãy các bản ghi log, lưu trữ các bản ghi
quá khứ và các thay đổi đã được thực hiện.
Sao lưu định kỳ - khống chế kích thước. Tùy vào kiểu ghi log – mức độ phôi phục
khác nhau.
Sao lưu file # CSDL là lưu 1 hoặc nhiều file cụ thể. - giảm thời gian khi
không phải sao lưu toàn bộ.
Các kiểu sao lưu file: Full (sao lưu toàn bộ), Partial (sao lưu một phần) và
Differential (chỉ sao lưu thay đổi so với lần sao lưu trước đó). Kiểu sao lưu
Differential có thể áp dụng với cả hai kiểu Full và Partial.
An toàn dữ liệu sao lưu
Dữ liệu sao lưu lớn, cần lên lịch dọn dẹp (ghi đè, xóa…) để đảm bảo an toàn.
Cơ chế bảo vệ file sao lưu: dùng mật khẩu cho file hoặc phần cứng, mã hóa, sao lưu
ra ngoài. Kết hợp nén và mã hóa để giảm kích thước.
Sao lưu off-site là sao lưu trang thiết bị lưu trữ khác - an toàn với sự cố toàn nhà,
thành phố. Off-site có thể bị đánh cắp: mã hóa đường truyền + dùng người tin cậy.

Nguyễn Minh Đức|18


Khôi phục cơ sở dữ liệu
là việc khôi phục lại một phần hoặc toàn bộ CSDL khi cơ sở dữ liệu có sự cố. - khó,
cần người có kinh nghiệm. Dựa vào các dạng file: bản sao toàn bộ CSDL, file sao
lưu CSDL, file log giao dịch CSDL.
B1: xác định kiểu khôi phục phù hợp: Toàn bộ. Một phần (đến 1 thời điểm nào đó).
Khôi phục theo giao dịch - chi tiết theo giao dịch - cần 1 bên thứ 3

Khôi phục xong nhớ kiểm tra lại.
Tương tự sao lưu, hệ quản trị CSDL hỗ trợ qua giao diện quản trị hoặc dòng lệnh.
RESTORE DATABASE { database_name | @database_name_var } [ FROM
<backup_device> [ ,...n ] ] [ WITH { [ RECOVERY | NORECOVERY |
STANDBY = {standby_file_name | @standby_file_name_var }
] |,
<general_WITH_options> [ ,...n ] | , <replication_WITH_option> | ,
<change_data_capture_WITH_option> | , <FILESTREAM_WITH_option> | ,
<service_broker_WITH options> | , RESTORE_DATABASE> } [ ,...n ] ]
12.Khái quát về kiểm toán CSDL và các dạng kiểm toán CSDL.
Kiểm toán cơ sở dữ liệu
là việc giám sát các hành vi của người dùng thực hiện trên cơ sở dữ liệu và xem
xét các hành vi đó có phù hợp với chính sách quản trị và bảo mật cơ sở dữ liệu của
cơ quan, tổ chức hay không.
Mục đích: giám sát – tìm ra nguyên nhân sau sự cố - quan trọng.
Giám sát – bắt buộc + liên tục – thu thập dữ liệu cho kiểm toán. Có thể được thực
hiện tại chỗ, phân tán trên từng máy hoặc một hệ thống kiểm toán độc lập.
Các dạng kiểm toán cơ sở dữ liệu
- Kiểm toán đăng nhập/đăng xuất cơ sở dữ liệu
Thông tin ghi lại: username, địa chỉ IP của máy khách, tên ứng dụng máy
khách, thời gian, trạng thái. Giám sát hoạt động đăng nhập đăng suất.
VD ghi nhận trang thái đăng nhập không thành công 1 vài lần ở một tài
khoản, sai quá nhiều lần sẽ tiến hành khóa.
Dùng tigger để ghi log đăng nhập – đăng xuất hoặc sử dụng ghi log có sẵn
của SQL Server
- Kiểm toán nguồn sử dụng cơ sở dữ liệu
Nguyễn Minh Đức|19



Gồm: địa chỉ IP, tên ứng dụng, nút mạng kết nối tới csdl.
Ứng dụng cho các hoạt động: kết nối, đăng nhập vào csdl, thực hiện lệnh
SQL.
- Kiểm toán hoạt động DDL (ngôn ngữ miêu tả dữ liệu)
Kiểm toán việc thay đổi lược đồ (schema), hoặc cấu trúc các bảng trong cơ sở
dữ liệu. Chúng ảnh hưởng lớn tới hiệu năng của cơ sở dữu liệu.
Tự giám sát hoặc giám sát độc lập.
- Kiểm toán lỗi CSDL
Giám sát các lỗi sinh ra, hoặc do tin tặc chèn vào để phát hiện tấn công.
- Kiểm toán thay đổi mã nguồn của thủ tục, hàm, hoặc triger
Giám sát và ghi log sự thay đổi mã nguồn của các thủ tục, hàm và các triger.
Gồm: ai thực hiện sửa, nội dung thay đổi, thời gian sửa. Có thể sửa dụng các
tính năng trong CSDL.
- Kiểm toán thay đổi đặc quyền và thông tin truy nhập
Giám sát thay đổi thông tin người dùng và quyền truy cập. Rất quan trọng.
Gồm:
- Thêm hoặc xóa người dùng, tài khoản, vai trò;
- Thay đổi ánh xạ người dùng hoặc vai trò;
- Thay đổi đặc quyền (có thể do người dùng hoặc vai trò);
- Thay đổi mật khẩu;
- Thay đổi các thuộc tính an ninh tại máy chủ, cơ sở dữ liệu, lệnh, hoặc đối
trượng trong CSDL

- Kiểm toán việc thay đổi các dữ liệu nhạy cảm
Ghi log lại các thông tin nhạy cảm trước và sau thay đổi. Chú ý: Phát sinh dữ
liệu lớn và rò rỉ dữ liệu nhạu cảm.
Nguyễn Minh Đức|20


Bài tập

Like: tìm kiếm theo mẫu %: thay thế cho 0 hoặc 1 ký tự nào đó
Không kiểm tra ký tự thoát truy vấn
SQL injection – không kiểm tra dữ liệu đầu vào:
"SELECT * FROM users WHERE name = '" + userName + "';"
Lấy username => thay username = a' or 't'='t
SELECT * FROM users WHERE name = 'a' or 't'='t';
Vì ‘t’ =’t’ luôn đúng => bắt buộc phải chọn 1 người dùng hợp lệ.
Trong khi hầu hết các SQL server cho phép thực hiện nhiều truy vấn cùng lúc chỉ với một
lần gọi, tuy nhiên một số SQL API như mysql_query của php lại không cho phép điều đó
vì lý do bảo mật. Điều này chỉ ngăn cản tin tặc tấn công bằng cách sử dụng các câu lệnh
riêng rẽ mà không ngăn cản tin tặc thay đổi các từ trong cú pháp truy vấn.
Có thể xóa tất cả người dùng từ bảng users.
SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM
data WHERE 't' = 't';
Xử lý không đúng kiểu
Lỗi SQL injection - đị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.
Ví dụ trường số không kiểm tra đầu vào:
"SELECT * FROM data WHERE id = " + a_variable + ";"
Id không kiểm tra trường nhập vào – xóa người dùng 1: 1;DROP TABLE users
SELECT * FROM data WHERE id=1;DROP TABLE users;
Dạng tấn công sử dụng câu lệnh SELECT
Đoạn mã:

Nguyễn Minh Đức|21


<% Dim vAuthorName, objRS, strSQL vAuthorName =
Request("fAUTHOR_NAME") strSQL = "SELECT * FROM T_AUTHORS WHERE
AUTHOR_NAME =' " & _ vAuthorName & " ' " Set objRS =

Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN=..." … Set
objRS = Nothing %>
Nhập:
' UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE ' '=' (*)
Truy vấn không thành công => thực hiện lệnh tiếp theo sau từ khóa UNION
Xóa: ' DROP TABLE T_AUTHORS -Việc đầu tiên cần làm là tìm số trường trong câu truy vấn của trang, trên cơ sở đó sử dụng
câu lệnh UNION SELECT để ghép dữ liệu muốn trích xuất vào câu truy vấn gốc của
trang. Số trường trong UNION SELECT phải bằng số trường trong câu truy vấn gốc của
trang. Đồng thời, kiểu dữ liệu mỗi trường trong UNION SELECT phải tương thích với
kiểu dữ liệu của trường tương ứng trong câu truy vấn gốc của trang.
Thực hành thầy Dậu:
- Tìm số trường trong câu truy vấn của trang: + sam%' order by ; -- , trong đó là số thứ tự
của trường. Lần lượt thử với 1, 2, 3,… và quan sát kết quả cho đến khi trang không hiển
thị kết quả. ở lần thử cuối cho kết quả đúng là số trường có trong câu truy vấn. + sam%'
union select ;-- , trong đó có thể là 1, 2, 3,… hoặc '1', '2', '3',… Tăng dần số trường cho đến
khi trang không hiển thị kết quả hoặc báo lỗi thực hiện. ở lần thử cuối cho kết quả đúng
cho biết số trường có trong câu truy vấn.
- Hiển thị thông tin hệ quản trị CSDL và hệ điều hành: + ssss' union select '', @@version,
0 -- - Trích xuất danh sách các bảng của CSDL: + ssss' union select '', name, 0 from
sys.objects where type='u'; -- Trích xuất danh sách các trường của một bảng: + ssss' union select '', a.name, 0 from
sys.columns a inner join sys.objects b on a.object_id = b.object_id where
b.name='tbl_users'; -- + Thay tên bảng tbl_users bẳng bảng khác có được ở mục trên để
hiển thị danh sách các trường của bảng đó.
- Trích xuất dữ liệu bảng: + ssss' union select full_name, username+'--'+password, 0 from
tbl_users;-- + Thay tên bảng và danh sách trường để trích xuất lữ liệu của các bảng khác
có được ở mục trên. + Lưu ý, nếu số trường của câu truy vấn mới nhiều hơn số trường
trong câu truy vấn gốc thì cần ghép các trường bằng phép nối xâu để số trường trong
Nguyễn Minh Đức|22



UNION SELECT phải bằng số trường trong câu truy vấn gốc của trang và kiểu dữ liệu
mỗi trường trong UNION SELECT phải tương thích với kiểu dữ liệu của trường tương
ứng trong câu truy vấn gốc của trang.
SELECT * FROM tbl_accounts WHERE username='aaaa' OR 1=1--' AND
password='aaaa'
Truy nhập vào tài khoản aaaa 1=1-- luôn đúng.
Xóa: Samsung Galaxy S8';DELETE FROM tbl_products;-- câu lệnh thành:
SELECT * FROM tbl_products WHERE keyword like '%Samsung Galaxy
S8';DELETE FROM tbl_products;--%'
Tương tự với: UPDATE, INSERT
Chèn thêm: Galaxy S8';INSERT INTO tbl_administrators (username, password)
VALUES ('attacker', 'abc12345');--

Nguyễn Minh Đức|23



×