-: Trong bài giảng này và các
bài giảng tiếp theo, chúng ta sẽ nói về một lỗ hổng được gọi là XSS.
XSS là viết tắt của Cross Site Scripting.
Loại lỗ hổng này cho phép kẻ tấn công
đưa JavaScript vào một trang.
Vì vậy, JavaScript là một ngôn ngữ lập trình.
Và khi sử dụng lỗ hổng này, kẻ tấn công
có thể thực thi mã, được viết bằng JavaScript,
vào một trang nhất định
trong một trang web.
JavaScript là ngôn ngữ phía máy khách,
vì vậy khi mã được thực thi, nó sẽ được thực
thi trên máy khách, trên người dùng, trên
người đang duyệt trang web.
Nó sẽ không được thực thi trên máy
chủ, vì vậy ngay cả khi mã của bạn
dẫn đến việc cung cấp cho bạn một trình
bao ngược, trình bao sẽ đến từ người
dùng đang duyệt trang
và nó sẽ không đến từ trang web.
Vì vậy, bất kỳ mã nào bạn viết bằng JavaScript sẽ được khai
thác hoặc sẽ chạy trên người dùng mục
tiêu, trên những người xem các
trang chứ không phải trên máy chủ web.
Vì vậy, máy chủ web sẽ chỉ được sử dụng làm phương
tiện thực thi mã hoặc phân phối mã.
Có ba loại lỗ hổng XSS chính, Kiên trì hoặc
Được lưu trữ, Được phản
ánh và dựa trên
DOM.
XSS được lưu trữ sẽ được lưu trữ trong cơ sở dữ liệu,
vì vậy mã mà bạn đưa vào sẽ được lưu trữ vào cơ sở dữ
liệu hoặc vào trang,
để mọi lúc, bất kỳ người nào xem trang đó, mã của bạn
sẽ được thực thi.
Phản ánh, mã sẽ chỉ được
thực thi khi người dùng
mục tiêu chạy một URL cụ thể do bạn tạo
hoặc viết.
Vì vậy, bạn sẽ thao tác với một số loại URL
và gửi nó đến một mục tiêu
và khi họ chạy mục tiêu đó,
khi họ chạy URL đó, mã sẽ được thực thi.
Kết quả dựa trên DOM từ mã JavaScript được viết trên
máy khách.
Vì vậy, mã sẽ thực sự được thông dịch
và chạy ở phía máy khách mà không
cần bất kỳ giao tiếp nào với máy chủ web.
Những điều này có thể
rất nguy hiểm vì đôi khi máy chủ web áp dụng một số loại
bảo mật và lọc để kiểm tra XSS.
Nhưng với DOM dựa trên mã không bao giờ được gửi đến
máy chủ web.
Vì vậy, mã sẽ được thông dịch và chạy trên trình duyệt
web mà không cần tương tác với máy chủ web.
Và những thứ này sẽ hiện diện trong các trang web cập nhật
nội dung của chúng mà không cần làm mới.
Vì vậy, tất cả chúng tôi đã sử dụng các trang web mà bạn đặt tên
người dùng của mình
chẳng hạn và nó tải ngay
lập tức mà không cần phải kiểm tra với máy chủ web hoặc bạn đặt
một số loại chuỗi và nó thực hiện tìm kiếm
mà không cần giao tiếp với máy chủ web hoặc thực hiện điều gì đó
mà không cần giao tiếp với máy chủ web.
Vì vậy, nếu bạn có thể tiêm vào đó, thì
tiêm này sẽ không được xác thực, vì vậy nó
sẽ được thực hiện ngay lập tức và bỏ qua
tất cả các xác nhận.