HTTP Methods
Chào mừng các bạn đã quay trở lại với chuyên mục WebDevTips số thứ 3 của CLB WebDev Studios.
Ở chuyên mục tuần trước về “Hành trang cần thiết cho Lập trình Web” chúng ta đã hiểu cơ bản cấu trúc của một trang web và một vài công cụ, ngôn ngữ phục vụ cho việc lập trình web rồi đúng không? Nếu bạn nào bỏ lỡ thì xem lại bài viết tại đây nhé!
Vậy có khi nào các bạn tự hỏi tại sao chỉ cần nhập URL với vài từ, ví dụ: http://webdevstudios.org/ thì hiển thị ra được cả nguyên trang web với đủ thứ thông tin, dữ liệu không? Và để giải ngố cho các bạn thì hôm nay chúng ta sẽ cùng tìm hiểu về một chủ đề hót hòn họt là:
HTTP Methods
A. HTTP là gì và nó hoạt động ra sao
I. HTTP là gì?

HTTP là gì? “Ăn” được không?
Phiên bản đầu tiên của HTTP là HTTP/0.9, từ lúc công bố đến nay đã trải qua nhiều phiên bản 1.x (1.0, 1.1, 1.2, 1.3) và hiện tại phiên bản là HTTP/2.x. Trong phạm vi bài viết mình sẽ nói về phiên bản HTTP/1.1, là phiên bản mà hiện tại vẫn đang là phổ biến nhất.
II. Hoạt động của HTTP
1. HTTP Session

Phiên hoạt động của HTTP
Trước đây, một phiên HTTP chỉ thực hiện được một HTTP request và response. Hiện nay, web server sử dụng 2 phương pháp multi-threading hoặc multi-processing hoặc kết hợp cả 2 phương pháp để phép một phiên kết nối client có thể gửi nhiều request mà chưa cần response từ server và ngược lại.
2. HTTP Request Methods

Mô hình các phương thức hoạt động của HTTP Request
Bảng mô tả ngắn gọn về hành động của các phương thức HTTP
Phương thức | Hoạt động |
---|---|
GET | Được sử dụng lấy tài nguyên từ server |
HEAD | Được sử dụng để lấy phần header mà không có phần body |
POST | Trình dữ liệu để xử lý đến tài nguyên được xác định |
PUT | Cho phép client upload tệp tin mới lên web server |
DELETE | Yêu cầu web server xóa tài nguyên được xác định |
CONNECT | Có thể cho phép client sử dụng website như một proxy |
OPTIONS | Trả lại danh sách các phương thức HTTP mà được bật trên web server |
TRACE | Dội lại cho client bất cứ chuỗi nào được gửi tới server |
2.1 GET
*Giải ngố về phương thức GET
Giống như việc mình nhập URL để xem một trang tin tức có sẵn trên mạng vậy thôi
Ex: http://webdevstudios.org/phuong-thuc-http
Đây là phương thức GET, lấy dữ liệu là bài viết ở WebServer và gửi trả về 1 thẻ Tag có chứa địa chỉ dữ liệu cho trang này.
2.2 POST
*Giải ngố về phương thức POST:
Này dễ quá cần gì giải thích phải không nào =))
2.3 PUT
Sự khác nhau cơ bản giữa POST và PUT nằm ở ý nghĩa của các Request-URI.
– POST request xác định tài nguyên mà sẽ xử lý các thực thể kèm theo.
– Ngược lại, các URI trong PUT request xác định các thực thể kèm theo với các request – user agent biết cái gì URI được dự định và các máy chủ không phải cố gắng để ứng dụng các request đến tài nguyên khác.
Dưới đây là ví dụ request và response phương thức PUT
*Giải ngố về phương thức PUT:
Hiểu nôm na là thằng POST thì tạo mới thông tin được gửi trên server còn thằng PUT là ghi đè tất cả thông tin của đối tượng với những gì được gửi lên.
+ Request:
PUT /test.txt HTTP/1.1
Host: example.com
Content-Length: 14
TEST
+ Reponse:
HTTP/1.1 201 Created
Location: /test.txt
Nếu phương thức PUT được bật trên web server, thì attacker có thể sửa đổi tài nguyên trên máy chủ hoặc thêm mã độc trên máy chủ đó (ví dụ upload tệp tin mà thực thi dòng lệnh như gọi lệnh cmd.exe)
2.4 DELETE
Phương pháp này không đảm bảo rằng thao tác được thực hiện, ngay cả khi mã trạng thái từ máy chủ thông báo hành động đã thực hiện thành công.
*Giải ngố về phương thức DELETE:
De le te đã nói lên tất cả rồi =))
+ Request:
DELETE /test.txt HTTP/1.1
Host:example.com
+ Response:
HTTP/1.1 200 OK
Cache-Control: no-cache
Cache-Control: no-store
Date: Fri, 9 Dec 2016 10:54:46 GMT
[…]
OK
Phương thức này cho phép client xóa một tệp tin trên web server. Attacker có thể khai thác nó đơn giản và trực tiếp deface website hoặc có thể sử dụng cho mục đích tấn công DoS.
Các phương thức còn lại dưới này thường rất ít dùng, bạn nào muốn tìm hiểu có thể đọc thêm từ các nguồn khác trên mạng nha
2.5 HEAD
Dưới đây là ví dụ về Request và Response của phương thức HEAD
+ Request:
HEAD / HTTP/1.1
Host: example.com
+ Response:
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 9 Dec 2016 15:28:38 GMT
2.6 CONNECT
2.7 OPTIONS
Dưới đây là ví dụ request và response phương thức OPTIONS
+ Request:
OPTIONS / HTTP/1.1
Host:example.com
+ Response:
HTTP/1.1 200 OK
Allow: OPTIONS, TRACE, GET, HEAD, POST
Server: Microsoft-IIS/7.5
Public: OPTIONS, TRACE, GET, HEAD, POST
X-Powered-By: ASP.NET
Date: Fri, 9 Dec 2016 07:52:17 GMT
Từ những thông tin này sẽ giúp attacker dễ dàng xác định phương thức nào đang enable và từ đó thực hiện tấn công từ xa. Vì vậy, thừa nhận disable phương thức OPTIONS đến người dùng từ xa.
2.8 TRACE
Dưới đây là ví dụ request và response phương thức TRACE
+ Request:
TRACE / HTTP/1.0
Host: example.com
A: b
+ Response:
HTTP/1.1 200 OK
Date: Fri, 9 Dec 2016 07:55:20 GMT
Server: Microsoft-IIS/7.5
Content-Type: message/http
TRACE / HTTP/1.0
A: b
3. HTTP Status Code
– 1xx – Informational : Chỉ định các mã trạng thái tạm thời
100 Continue, 101 Switching
– 2xx – Successful: Các mã trạng thái trong lớp này chỉ ra các request của client đã thành công, đã nhận, đã hiểu và được chấp nhận.
200 OK, 201 Created, 202 Accepted, 203 Non-Authoritative Information, 204 No Content, 205 Reset Content
– 3xx – Redirection: Các mã trạng thái trong lớp này được sử dụng chuyển hướng URL
300 Multiple Choices, 301 Moved Permanently, 302 Found, 305 Use Proxy, 307 Temporary Redirect
– 4xx – Client Error: Các mã trạng thái trong lớp này thông báo dường như có lỗi từ phía client (như lỗi yêu cầu url, xác thực, không được phép, ..), kèm đó là mô tả lỗi
400 Bad Request, 402 Payment Required, 403 Forbidden, 404 Not Found, 405 Method Not Allowed, 406 Not Acceptable, ..
– 5xx – Server Error: Các mã lỗi trong lớp này chỉ định lỗi xuất phát từ phía server
500 Internal Server Error, 501 Not Implemented, 502 Bad Gateway(Mỗi mùa đăng kí học phần là đây), 503 Service Unavailable, 504 Gateway Timeout(Cũng đăng ký học phần luôn nè), 505 HTTP Version Not Supported
B. Sự khác biệt giữa HTTP và HTTPS
I. HTTPS là gì?

Cấu trúc của một HTTPS
Hiện nay thì việc sử dụng giao thức Https chủ yếu được dùng cho các trang web có giao dịch trực tuyến sử dụng thẻ thanh toán đơn hàng. Nhằm đảm bảo an toàn cho giao dịch, tránh những rủi ro bị lấy mất thông tin thể trong quá trình thanh toán.
Ngoài ra web sử dụng giao thức Https là 1 tín hiệu để Google xếp hạng từ khóa. Việc này khiến rất nhiều trang Web chuyển qua dùng giao thức Https để Seo được tốt hơn.
II. HTTPS và HTTP khác nhau ở điểm nào?

Có phải khác nhau ở chữ “S”?
Tuy việc dùng HTTPS giúp trang Web của bạn bảo mật hơn nhưng sẽ khiến cho việc truy cập của Website chậm hơn so với HTTP. Và nhiều trang không có giao dịch trực tuyến hay truyền tải thông tin dữ liệu quan trọng thì thông tin có bị lộ hay không cũng không quá quan trọng.
Nhưng hiện nay Chrome sắp có cảnh báo với những website còn sử dụng HTTP, và ưu tiên cho các trang web sử dụng HTTPS.
Để có thể sử dụng giao thức HTTPS thì Website của bạn phải có chứng chỉ SSL. Còn không thì sẽ gặp tình trạng hiển thị là kết nối không bảo mật trên trình duyệt Chrome.
KẾT
Hẹn gặp mọi người trong chuyên mục WebDevTips kì tới. Se ya!
Nguồn : vnsys.wordpress.com
Write a Comment