HTTP/HTTPS
Last updated
HTTP/0.9 (1991): Phiên bản đầu tiên, rất đơn giản, chỉ hỗ trợ phương thức GET và không có header.
HTTP/1.0 (1996): Thêm nhiều phương thức (POST, HEAD), header, và hỗ trợ nhiều loại nội dung.
HTTP/1.1 (1997): Cải tiến đáng kể so với HTTP/1.0, hỗ trợ kết nối liên tục (persistent connections), đường ống (pipelining), và mã trạng thái chi tiết hơn.
HTTP/2 (2015): Thay đổi lớn về cách thức truyền dữ liệu, sử dụng nhị phân thay vì văn bản, nén header, và đa đường truyền (multiplexing) để tăng tốc độ tải trang.
HTTP/3 (2022): Sử dụng giao thức thay vì TCP, giúp cải thiện độ trễ và hiệu suất trên các kết nối không ổn định.
HTTP là giao thức tầng ứng dụng (tầng 7), dựa trên kiến trúc client-server, thường hoạt động trên cổng mặc định là 80. Đây là một trong các giao thức chuẩn về mạng Internet, được dùng để liên hệ thông tin giữa Máy cung cấp dịch vụ (Web server) và Máy sử dụng dịch vụ (Web client), là giao thức Client/Server dùng cho World Wide Web – WWW
HTTP là một giao thức ứng dụng của bộ giao thức TCP/IP (các giao thức nền tảng cho Internet).
HTTP hoạt động dựa trên mô hình Client – Server. Trong mô hình này, các máy tính của người dùng sẽ đóng vai trò làm máy khách (Client). Sau một thao tác nào đó của người dùng, các máy khách sẽ gửi yêu cầu đến máy chủ (Server) và chờ đợi câu trả lời từ những máy chủ này.
HTTP là một stateless protocol. Hay nói cách khác, request hiện tại không biết những gì đã hoàn thành trong request trước đó.
HTTP cho phép tạo các yêu cầu gửi và nhận các kiểu dữ liệu, do đó cho phép xây dựng hệ thống độc lập với dữ liệu được chuyển giao.
Có 2 kiểu “message”, gồm request được gửi từ client và response được gửi bởi server
Request gồm 4 phần: request line, header(với thông tin về host), empty line, body(có thể có extra information)
Request line and HTTP methods: Trong phần request line cần đặt method được sử dụng. Danh sách các method quan trọng:
GET (to get information from the server)
POST (to post and give information to the server)
HEAD (ask the server for the header of the request)
PUT (modify the data in the server, a sort of post alternative)
DELETE (delete data in the server)
PATCH (applies partial modifications to a resource)
TRACE (provides a useful debugging mechanism)
OPTIONS (requests permitted communication options for a given URL)
CONNECT (start a two-way communication between client and server)
Response cũng gồm 4 phần: statu-line, header (với thông tin về server), emptyline, body (có thể có extra information)
Status line and status code: Trong status line chưa status code cung cấp thông tin về cách request được thực hiện và kết quả có thành công hay không hoặc thất bại như thế nào
1xx: Informational
2xx: Successful
3xx: Redirection
4xx: Client error
5xx: Server error
SSL là chữ viết tắt của Secure Sockets Layer (Lớp socket bảo mật). Một loại bảo mật giúp mã hóa liên lạc giữa website và trình duyệt. Công nghệ này đang lỗi thời và được thay thế hoàn toàn bởi TLS.
TLS là chữ viết tắt của Transport Layer Security, nó cũng giúp bảo mật thông tin truyền giống như SSL. Nhưng vì SSL không còn được phát triển nữa, nên TLS mới là thuật ngữ đúng nên dùng.
Giao thức này đảm bảo tính toàn vẹn, xác thực và bảo mật của dữ liệu, đồng thời cung cấp khả năng xác định danh tính của máy chủ và đảm bảo rằng thông tin được truyền tải một cách an toàn.
Handshake: Máy khách và máy chủ thiết lập kết nối an toàn bằng cách trao đổi thông tin về các thuật toán mã hóa được hỗ trợ và xác thực danh tính của nhau (thường sử dụng chứng chỉ số).
Trao đổi khóa: Máy khách và máy chủ tạo ra một khóa phiên (session key) duy nhất để mã hóa dữ liệu.
Mã hóa dữ liệu: Tất cả dữ liệu được truyền qua kết nối được mã hóa bằng khóa phiên, đảm bảo tính bảo mật và riêng tư.
Giao thức này thường được áp dụng trên giao thức TCP để mã hóa các giao thức ứng dụng như HTTP, FTP, SMTP và IMAP. Tuy nhiên, ngoài TCP, TLS cũng có thể được triển khai trên giao thức UDP, DCCP và SCTP, ví dụ như trong các ứng dụng dựa trên VPN và SIP.
HTTPS là sự kết hợp các request và response HTTP với công nghệ SSL và TLS. Giao thức này bảo mật thông tin liên lạc qua Internet bằng cách sử dụng kết hợp mã hóa và xác thực để bảo vệ tính bảo mật và toàn vẹn của dữ liệu được truyền giữa các hệ thống
Khi một client (e.g., a web browser) kết nối đến server sử dụng HTTPS, quá trình sau sẽ diễn ra:
Client gửi HTTPS request đến server, gồm một bản sao của SSL/TLS certificate.
Server nhận request and xác thực client’s certificate để đảm bảo nó hợp lệ và và được cấp bởi CA đáng tin cậy.
Nếu certificate hợp lệ, server gửi SSL/TLS certificate của mình tới client.
Client xác minh server’s certificate để đảm bảo nó hợp lệ và và được cấp bởi CA đáng tin cậy.
Nếu certificate hợp lệ, client và server tạo shared secret key bằng “handshake.” Khóa này sẽ được sử dụng để mã hóa mọi thông tin liên lạc tiếp theo giữa client và server.
Client và server sử dụng shared secret key để mã hóa và giải mã mọi thông tin liên lạc sau đó
Client và server trao đổi dữ liệu bằng kết nối được mã hóa.
HTTP
HTTPS
Là viết tắt của
Giao thức truyền siêu văn bản
Giao thức truyền siêu văn bản bảo mật
Giao thức cơ bản
HTTP/1 và HTTP/2 sử dụng TCP/IP. HTTP/3 sử dụng giao thức QUIC.
Sử dụng HTTP/2 với SSL/TLS để mã hóa thêm cho các yêu cầu và phản hồi HTTP
Cổng
Cổng mặc định là 80
Cổng mặc định là 443
Trường hợp sử dụng
Các trang web dựa trên văn bản cũ hơn
Tất cả các trang web hiện đại
Bảo mật
Không có tính năng bảo mật bổ sung
Sử dụng chứng chỉ SSL để mã hóa khóa công khai
Lợi ích
Hỗ trợ giao tiếp qua internet
Cải thiện độ uy tín, độ tin cậy và xếp hạng công cụ tìm kiếm của trang web
HTTP chạy trên TCP -> SYN flood, ACK flood, RST flood, Push-ACK flood, FIN flood,...
Garbage Flood (Gửi dữ liệu nhị phân rác), GET (HEAD, POST) Flood, Reverse Bandwidth Flood (khiến máy chủ gửi đi một lượng lớn dữ liệu, làm quá tải đường truyền), HTTP Fuzzers và Misbehaved Fields(Gửi rác hoặc giá trị không hợp lệ vs HTTP), Low and Slow Attack(Gửi lưu lượng HTTP vs tốc độ chậm),
Các cuộc tấn công phổ biến khác như cross-site scripting, SQL injection, ... nhằm khai thác lỗ hổng trong ứng dụng web để chiếm quyền truy cập hoặc dữ liệu.
Kẻ tấn công lợi dụng CDN(Content Delivery Network) gửi yêu cầu về nội dung động cũng như nội dung không tồn tại sẽ khiến CDN tiếp cận được các máy chủ, từ đó tấn công máy chủ bằng các phương thức khác.
Tấn công vào quá trình bắt tay (Handshake):
Renegotiation Attack: Kẻ tấn công có thể ép buộc việc tái đàm phán kết nối SSL/TLS, tạo cơ hội chèn dữ liệu độc hại vào luồng dữ liệu được mã hóa.
Downgrade Attack: Kẻ tấn công có thể ép buộc máy khách sử dụng phiên bản SSL/TLS cũ hơn, kém an toàn hơn, để khai thác các lỗ hổng đã biết trong các phiên bản đó.
Tấn công vào chứng chỉ số:
Giả mạo chứng chỉ: Kẻ tấn công có thể tạo ra chứng chỉ số giả mạo để đánh lừa người dùng hoặc trình duyệt tin rằng kết nối là an toàn.
Tấn công vào cơ quan cấp chứng chỉ (CA): Nếu kẻ tấn công có thể xâm nhập vào hệ thống của CA, chúng có thể cấp chứng chỉ giả mạo cho các trang web độc hại.
Tấn công vào thuật toán mã hóa:
FREAK, Logjam, DROWN: Đây là những lỗ hổng trong các thuật toán mã hóa cụ thể được sử dụng trong SSL/TLS, cho phép kẻ tấn công giảm mức độ bảo mật của kết nối và có thể giải mã dữ liệu.
POODLE: Tấn công này khai thác lỗ hổng trong giao thức SSL 3.0, cho phép kẻ tấn công giải mã dữ liệu được mã hóa.
BEAST: Tấn công này khai thác lỗ hổng trong một số chế độ mã hóa của TLS 1.0, cho phép kẻ tấn công giải mã một phần dữ liệu được mã hóa.
Tấn công vào việc triển khai SSL/TLS:
Heartbleed: Lỗ hổng nghiêm trọng trong thư viện OpenSSL cho phép kẻ tấn công đọc nội dung bộ nhớ của máy chủ, có thể chứa thông tin nhạy cảm như khóa riêng tư hoặc mật khẩu.
CCS Injection: Kẻ tấn công có thể chèn các thông điệp giả mạo vào luồng dữ liệu được mã hóa, có thể dẫn đến việc giải mã dữ liệu hoặc thực thi mã từ xa.
Tấn công vào giao thức ứng dụng:
BREACH: Tấn công này nhắm vào việc nén HTTP, cho phép kẻ tấn công giải mã thông tin nhạy cảm như cookie hoặc mã thông báo CSRF.
CRIME: Tương tự như BREACH, nhưng nhắm vào việc nén SSL/TLS.
LUCKY 13: Tấn công này khai thác lỗ hổng trong cách xử lý đệm của một số triển khai TLS, cho phép kẻ tấn công giải mã dữ liệu được mã hóa.
Giám sát lưu lượng mạng: Sử dụng các công cụ như hệ thống phát hiện xâm nhập (IDS) hoặc hệ thống ngăn ngừa xâm nhập (IPS) để theo dõi lưu lượng mạng bất thường, các mẫu tấn công đã biết và các dấu hiệu của hoạt động độc hại.
Phân tích nhật ký (log): Kiểm tra nhật ký máy chủ web, tường lửa và các thiết bị bảo mật khác để tìm kiếm các hoạt động đáng ngờ, lỗi hoặc cảnh báo liên quan đến các cuộc tấn công.
Sử dụng các công cụ quét lỗ hổng: Thường xuyên quét các ứng dụng web và hệ thống để tìm kiếm các lỗ hổng bảo mật có thể bị khai thác.
Giám sát chứng chỉ SSL/TLS: Theo dõi thời hạn hiệu lực và tính hợp lệ của chứng chỉ SSL/TLS để đảm bảo chúng không bị giả mạo hoặc hết hạn.
Theo dõi các cảnh báo bảo mật: Đăng ký nhận các bản tin và cảnh báo bảo mật từ các tổ chức uy tín để cập nhật thông tin về các lỗ hổng và mối đe dọa mới nhất.
Tường lửa ứng dụng web (WAF): Sử dụng WAF để lọc và chặn các yêu cầu độc hại, bảo vệ ứng dụng web khỏi các cuộc tấn công như SQL injection, XSS và các cuộc tấn công DDoS lớp ứng dụng.
Cập nhật phần mềm và vá lỗi: Thường xuyên cập nhật hệ điều hành, máy chủ web, ứng dụng web và các thư viện liên quan để vá các lỗ hổng bảo mật đã biết.
Sử dụng các phiên bản SSL/TLS mới nhất: Vô hiệu hóa các phiên bản SSL/TLS cũ và không an toàn, chỉ sử dụng các phiên bản mới nhất và được hỗ trợ để tận dụng các tính năng bảo mật mới nhất.
Triển khai chứng chỉ SSL/TLS mạnh mẽ: Sử dụng chứng chỉ từ các nhà cung cấp đáng tin cậy và đảm bảo chứng chỉ được cấu hình đúng cách.
Bảo vệ chống DDoS: Sử dụng các dịch vụ bảo vệ DDoS từ các nhà cung cấp chuyên nghiệp để giảm thiểu tác động của các cuộc tấn công DDoS.
Đào tạo nhận thức bảo mật: Đào tạo nhân viên và người dùng về các mối đe dọa an ninh mạng, cách nhận biết các cuộc tấn công phishing và các biện pháp phòng ngừa để tránh trở thành nạn nhân của các cuộc tấn công.
HTTPS spoofing(Giả mạo HTTPS trong URL),