1.Giới Thiệu
- Giao thức
là tập hợp các quy tắc được thiết lập nhằm xác định cách để định dạng, truyền
và nhận dữ liệu sao cho các thiết bị mạng máy tính - từ server và router tới
endpoint - có thể giao tiếp với nhau, bất kể sự khác biệt về cơ sở hạ tầng, thiết
kế hay các tiêu chuẩn cơ bản giữa chúng
- Khi cài đặt cấu hình,
giao dịch và thông tin không được theo dõi bởi một "giao thức”, thì
nó được gọi là một giao thức không trạng thái. Đối với một giao thức, kết nối chỉ kéo dài cho một giao dịch.
- Giao thức HTTP là một giao thức không
trạng thái dựa trên mô hình máy khách - máy chủ.Một ứng dụng khách HTTP,chẳng
hạn như trình duyệt Web, mở kết nối và gửi thông báo yêu cầu đến máy chủ HTTP
yêu cầu một nguồn lực. Máy chủ trả về một thông báo phản hồi với tài nguyên
được yêu cầu. Một lần tài nguyên được phân phối, máy chủ đóng kết nối. Do đó,
không có thông tin kết nối
- Bản chất không trạng thái của giao thức
HTTP có những ưu điểm và nhược điểm riêng của nó.
+ Ưu điểm: Ưu điểm của giao thức không
trạng thái là máy chủ không cần lưu giữ thông tin
người dùng giữa các yêu cầu. Điều này đơn
giản hóa thiết kế máy chủ vì nó không cần
phân bổ động bộ nhớ để quản lý các cuộc trò
chuyện đang diễn ra hoặc lo lắng về việc giải phóng nó khi kết nối máy khách bị
chết trong giao dịch giữa chừng.
+ Nhược điểm: Một nhược điểm của HTTP không
trạng thái là có thể cần phải bao gồm nhiều thông tin hơn trong mỗi yêu cầu và
thông tin bổ sung này sẽ cần được máy chủ giải thích mỗi lần. Một bất lợi khác
là sự thừa nhận rằng thông tin có
đạt được khách hàng vắng mặt. Do đó, việc
mất dữ liệu, nếu có, không được biết đến.
2. Session Tracking
- Cơ chế theo dõi cho phép ứng dụng Web duy
trì thông tin với máy chủ như miễn là khách hàng không đăng xuất khỏi trang
Web. Cơ chế theo dõi này được gọi là Session tracking.
- Cơ chế theo dõi session phục vụ mục đích
theo dõi danh tính khách hàng và trạng thái khác
thông tin cần thiết trong suốt session.
- Kỹ thuật theo dõi session:
+ URI rewriting: Kỹ thuật này được sử dụng để chuyển dữ liệu từ trang này sang trang
khác bằng cách nối một chuỗi văn bản vào cuối URL yêu cầu.
+ Hidden field: Kỹ thuật này được sử dụng
để chuyển các giá trị từ các trường ẩn của biểu mẫu HTML sang tài nguyên web.
+ Cookie: Kỹ thuật này được sử dụng để lưu
trữ thông tin trên máy của khách hàng dưới dạng văn bản tập tin.
+ Đây là những kỹ thuật phổ biến nhất được
các ứng dụng Web sử dụng để duy trì dữ liệu của khách hàng. Ngoài ra, đặc tả
Java Servlet APl cung cấp cơ chế theo dõi session thông qua
đối tượng javax.servlet.http.HttpSession.
Đối tượng được Servlet sử dụng để lưu trữ hoặc
truy xuất thông tin liên quan đến người
dùng để duy trì session trên máy chủ.
3. Lưu trữ thông tin trong một session
- Dữ liệu có thể được lưu trữ trong một đối tượng HttpSession bằng cách
sử dụng các cặp name - value. Dữ liệu được lưu trữ sẵn có trong suốt session hiện tại. Để lưu trữ
dữ liệu trong một session, phương thức setAttribute () được sử dụng.
- Phương thức setAttribute () đặt giá trị của thuộc tính có thể được truy xuất sau này.
- Ví dụ: trình bày cách tạo session mới và thiết lập đối tượng trong đó.
* Trong code, getSession () trả về đối
tượng session hiện tại được liên kết với yêu cầu. Nếu session không tồn tại,
thì giá trị boolean true chỉ ra để tạo một session mới.
* IsNew () trả về một giá trị boolean cho
biết đó có phải là một session mới hay không. Nó trả về true, sau đó các đối
tượng được liên kết với session mới thông qua phương thức setAttributes ().
* Phương thức setMaxInactiveInterval() chỉ
định thời gian giữa các yêu cầu từ máy khách trước khi vùng chứa servlet làm
mất hiệu lực session.
- Truy xuất thông tin được lưu trữ trong session :
+ Máy chủ, sử dụng HttpSession, thực hiện theo dõi session. Giá trị được lưu trữ trước đó có thể được truy xuất bằng phương thức
getAttribute (). Vì, kiểu trả về là một đối tượng, việc đánh máy dữ liệu được
liên kết với tên attribute đó trong session được thực hiện.
+ Nếu
giá trị trả về là null, có thể kết luận rằng không có thuộc tính nào như vậy
tồn tại. Do đó, cần phải kiểm tra null trước khi gọi các phương thức trên đối
tượng.
+ Ví dụ: giải thích quy trình truy xuất tên và tuổi được lưu trữ trong session.
4. Xóa một session
- Đôi khi người dùng trái phép có thể xâm nhập vào ứng dụng Web. Để tránh
hacker gây ra bất kỳ tác hại nào, phương thức validate () được sử dụng.
- Phương thức validate () xóa dữ liệu trong
một session mà một servlet hoặc JSP khác có thể yêu cầu trong tương lai. Do đó,
việc xóa một session nên được thực hiện một cách thận trọng vì các session được
liên kết với máy khách, không phải với các servlet hoặc các trang JSP riêng lẻ.
+ví dụ về xóa một session:
5. Session Timeout
- Session Timeout của session là cần thiết vì một session sử dụng các vị trí bộ nhớ để lưu trữ thông tin và thời gian dài không
hoạt động sẽ chiếm bộ nhớ một cách không cần thiết. Sau một khoảng thời gian
nhất định không hoạt động, session sẽ bị hủy để ngăn số lượng session tăng lên
vô hạn. Dữ liệu được lưu trữ trong session sẽ biến mất. Thời gian chờ của session
xảy ra nếu người dùng vẫn không hoạt động trong một khoảng thời gian lớn hơn
khoảng thời gian không hoạt động đã đặt.
- Khoảng thời gian chờ của phiên có thể được đặt trong file web.xml hoặc có thể được đặt bằng phương thức setMaxInactiveInterval (). Phương thức này được sử dụng để chỉ định thời gian giữa các yêu cầu từ máy khách trước khi container servlet làm mất hiệu lực session
Cú pháp:
Lưu ý : Cú pháp này phải viết trong file web.xml.
6.Cookies
Cookie là một phần thông tin nhỏ do máy chủ gửi đến trình
duyệt Web của máy khách. Các cookie được lưu trữ trên máy của khách hàng và được
máy chủ đọc lại khi nhận được yêu cầu cho cùng một trang.
Cookie chứa một hoặc nhiều cặp tên-giá trị được trao đổi
trong các tiêu đề yêu cầu và phản hồi. Tiêu đề yêu cầu HTTP chứa yêu cầu được
thực hiện bởi máy khách. Nó chứa thông tin như phương pháp, đường dẫn URL và
phiên bản giao thức HTTP.
Tiêu đề phản hồi HTTP chứa ngày, kích thước và loại tệp mà
máy chủ đang gửi lại cho máy khách. Khi máy chủ gửi cookie, máy khách sẽ nhận
cookie, lưu và gửi lại cho máy chủ mỗi khi máy khách truy cập một trang trên
máy chủ đó.
Cookie được lưu trữ trong khoảng thời gian giới hạn trên máy của khách hàng và sau khoảng thời gian được chỉ định là
hoàn thành, chúng sẽ tự động bị xóa.
Hạn chế chính của cookie là hầu hết các trình duyệt đều cho phép người dùng hủy kích hoạt (không chấp nhận)
bánh quy.
Vì giá trị của cookie có thể xác định duy nhất một khách hàng, cookie thường được sử dụng trong theo dõi phiên.
ví dụ mô tả khái niệm cookie.
7.Cookie Api
Các Servlet API cung cấp lớp javax.servlet.http.Cookie để tạo và làm việc với cookie. Những
cookie là một lượng nhỏ thông tin được gửi bởi một servlet đến trình duyệt Web. Giá trị của cookie là
duy nhất và có thể được sử dụng để xác định một khách hàng qua đó giúp quản lý phiên.
Lớp Cookie cung cấp một số phương pháp giúp quản lý cookie. Những phương thức đó là:
- - public void setMaxAge(int expiry): Phương pháp
này đặt tuổi tối đa của cookie tính bằng giây. Nếu giá trị là dương, thì cookie
sẽ hết hạn sau nhiều giây được chỉ định trước khi hết hạn.
- - public int getMaxAge (): Phương thức này trả về tuổi tối đa của cookie. Phương thức này trả về một số nguyên chỉ định tuổi tối đa của cookie tính bằng giây.
Trình bày cách lấy tuổi trong cookie
Mã trả về tuổi tối đa của cookie, được chỉ định bằng giây public void setValue (java. lang. StringnewValue).
ví dụ trình bày cách đặt giá trị của cookie.
- public java.lang.String getValue (): Phương thức này trả về giá trị của cookie. Phương thức trả về một chuỗi có chứa giá trị hiện tại của cookie.
- public java.lang.String getName () Phương thức này trả về tên của cookie. Sau khi cookie đã được tạo tên của nó không thể thay đổi.
ví dụ trình bày cách truy xuất tên và giá trị của cookie.
- public void setPath(String uri): Phương pháp này đặt
đường dẫn cho cookie. Cookie có sẵn cho tất cả các trang được chỉ định trong
thư mục và các thư mục con của nó. Đường dẫn của cookie phải có Servlet đặt
cookie.
ví dụ về trình bày cách đặt đường dẫn cho cookie.
- public java.lang.String getPath(): Phương thức này trả
về đường dẫn trên máy chủ mà máy khách trả về cookie. Cookie có sẵn cho tất cả
các đường dẫn phụ trên máy chủ. Phương thức này trả về một chuỗi chỉ định một
đường dẫn có chứa tên servlet, ví dụ, / AptechDemo.
-
public Cookie[] getCookies(): Cookie có thể được đọc từ
một yêu cầu bằng cách sử dụng phương thức HttpServletRequest.getCookies ().
Phương thức getCookies () trả về một mảng chứa tất cả các đối tượng Cookie mà
khách hàng gửi cùng với yêu cầu.
ví dụ về trình bày cách đọc cookie nhận được trong yêu cầu của khách hàng.
void addCookie (Cookie cookie):
- Các cookie được gửi bởi servlet tới trình duyệt
bằng phương thứctheHttpServletResponse .addCookie (j avax.servlet.http.Cookie).
- Phương pháp này thêm trường vào tiêu đề phản hồi HTTP để gửi cookie đến trình duyệt, mỗi lần một cookie.
- Phương pháp này thêm cookie được chỉ định vào phản hồi. Phương thức này có thể được gọi nhiều lần để đặt nhiều cookie. Ví dụ, phản hồi. addcookie (Cookie mới (“tên cookie”, “giá trị cookie”));
8.Securing Cookies
Để bảo mật cookie khỏi tin tặc trên Web, bạn có thể định cấu hình cookie với hai cài đặt bảo mật cụ thể là secure và HttpOnly.
Cờ an toàn thông báo cho trình duyệt Web biết rằng cookie sẽ chỉ được gửi trên kết nối SSL. Điều này có nghĩa là bất kỳ trang nào của ứng dụng Web không được bảo mật sẽ không thể truy cập cookie.
JavaScript cũng có thể được sử dụng để truy cập cookie từ máy. Điều này có nghĩa là cookie có sẵn trên các tập lệnh và có thể bị tin tặc truy cập để thao túng.
Servlet 3.0 cung cấp cờ HttpOnly thông báo cho trình duyệt rằng nội dung của cookie không thể truy cập được trong JavaScript. Nó được bao gồm trong tiêu đề phản hồi HTTP và ngăn chặn cookie khỏi một số loại tấn công.
- public void setSecure ():Phương thức này thông báo cho trình duyệt chỉ gửi cookie thông qua giao thức bảo mật, chẳng hạn như HTTPS.
- public void sethtpOnly(boolean):Phương pháp này có thể được sử dụng để đánh dấu hoặc bỏ đánh dấu cookie. Nếu được đặt là true, thì cookie được đánh dấu là HttpOnly và không hiển thị với mã kịch bản phía máy khách.
-public boolean isHttpOnly():Phương pháp này được sử dụng để kiểm tra xem cookie đã được đánh dấu là HttpOnly hay chưa.
ví dụ cho biết cách đặt cookie thành HttpOnIy và cờ an toàn theo lập trình trong Servlet.
t
Không có nhận xét nào:
Đăng nhận xét