AJAX LÀ GÌ?

Chia sẻ: Thu Dan | Ngày: | Loại File: PDF | Số trang:7

0
814
lượt xem
179
download

AJAX LÀ GÌ?

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

JavaScript, ngôn ngữ lập trình chạy trên trình duyệt đã quá quen thuộc với thế giới web kể từ khi Netscape phát minh ra nó. Sự phát triển của công nghệ và nhu cầu người sử dụng ngày càng cao buộc các nhà phát triển tạo ra một kỹ thuật khác cho phép xử lý các tác vụ phức tạp hơn

Chủ đề:
Lưu

Nội dung Text: AJAX LÀ GÌ?

  1. AJAX LÀ GÌ? JavaScript, ngôn ngữ lập trình chạy trên trình duyệt đã quá quen thuộc với thế giới web kể từ khi Netscape phát minh ra nó. Sự phát triển của công nghệ và nhu cầu người sử dụng ngày càng cao buộc các nhà phát triển tạo ra một kĩ thuật khác cho phép xử lý các tác vụ phức tạp hơn. Tháng 2/2005, trên Internet bắt đầu lan truyền thuật ngữ Ajax như là một kỹ thuật mới cho ứng dụng web. Những thành công vang dội và sự hấp dẫn kì lạ của Gmail, Google Suggest và Google Maps đã khiến cho Ajax được chú ý một cách đặc biệt. Hầu hết các câu chuyện về nguồn gốc của AJAX được bắt đầu từ khi Microsoft phát triển công nghệ Remote Scripting vào năm 1998. Tuy nhiên, phương pháp tải không đồng bộ nội dung trên một trang web đã xuất hiện trong thành tố IFRAME của Internet Explorer 3 (1996) và thành tố LAYER của Netscape 4.0 năm 1997. Khi giới thiệu Internet Explorer 4.0, Microsoft đã sử dụng mô hình đối tượng tài liệu DOM khác biệt. Đến năm 2000, Netscape hoàn toàn đánh mất thị trường trình duyệt vào tay hãng phần mềm của Bill Gates và thành tố LAYER cũng không còn được các chuyên gia phát triển web chú ý tới. Phải vài năm sau, AJAX mới lại lôi kéo được sự quan tâm của giới công nghệ và trở thành công cụ cải tiến giao diện người dùng cho ứng dụng web. Thuật ngữ này cũng chỉ mới xuất hiện cách đây 1 năm (tháng 2/2005) trong bài viết nổi tiếng của Jesse James Garrett trên trang Adaptive Path. Từ đó, AJAX trở thành trung tâm trong mọi câu chuyện liên quan đến thế hệ Web 2.0. Ajax là viết tắt của Asynchronous JavaScript and XML - kỹ thuật kết hợp hai tính năng mạnh của JavaScript được các nhà phát trển đánh giá rất cao : o Gửi yêu cầu (request) đến máy chủ mà không cần nạp lại trang o Phân tách và làm việc với XML Các ứng dụng Ajax xoay quanh một tính năng có tên là XMLHttpRequest. Các kĩ sư của dự án Mozilla bắt đầu hỗ trợ tính năng này ở bản Mozilla 1.0 (và Netscape 7). Apple cũng đã thực hiện một tính năng tương tự kể từ Safari 1.2. Ajax là sự phối hợp một loạt các công nghệ đang thu hút sự quan tâm của giới công nghiệp trong thời gian gần đây. Đó chính là : o Trình bày trang Web dựa trên XHTML và CSS, các chuẩn của W3C, được Firefox (Mozilla), Safari (Apple), Opera, Netscape 8.0 (nhân Firefox) hỗ trợ rất tốt; o Biểu diễn động và tương tác sử dụng Document Object Model, chuẩn của W3C; o Trao đổi và xử lý dữ liệu dùng XML và XSLT, chuẩn của W3C; o Thu hồi dữ liệu bất đối xứng dùng dùng XMLHttpRequest; o Dùng JavaScript để liên kết mọi thứ lại với nhau. JavaScript ở đây là ECMAScript, chuẩn của ECMA, không phải là JScript của Microsoft.
  2. AJAX hoạt động như thế nào? Từ lâu, mọi người đã tưởng tượng ứng dụng máy tính rồi sẽ được lưu và chạy hoàn toàn trên web thay vì nằm bó buộc trong ổ cứng. Dù vậy, viễn cảnh đó vẫn chưa thể xảy ra do ứng dụng web bị hạn chế bởi nguyên lý rằng tất cả các thao tác phải được thực hiện thông qua HTTP (HyperText Transfer Protocol - Giao thức truyền tải qua siêu liên kết). Những hoạt động của người sử dụng trên trang web sẽ tạo ra một yêu cầu HTTP tới server. Máy chủ thực hiện một số khâu xử lý như lấy lại dữ liệu, tính toán, kiểm tra sự hợp lệ của thông tin, sửa đổi bộ nhớ, sau đó gửi lại một trang HTML hoàn chỉnh tới máy khách. Về mặt kỹ thuật, phương pháp này nghe có vẻ hợp lý nhưng cũng khá bất tiện và mất thời gian, bởi khi server đang thực hiện vai trò của nó thì người dùng sẽ làm gì? Tất nhiên là chờ đợi. Để khắc phục hạn chế trên, các chuyên gia phát triển giới thiệu hình thức trung gian - cơ chế xử lý AJAX - giữa máy khách và máy chủ. Ajax cho phép tạo ra một Ajax Engine nằm giữa giao tiếp này. Điều này giống như việc tăng thêm một lớp giữa cho ứng dụng để giảm quá trình "đi lại" của thông tin và giảm thời gian phản ứng. Khi đó, các yêu cầu gửi resquest và nhận response do Ajax Engine thực hiện. Thay vì trả dữ liệu dưới dạng HTML và CSS trực tiếp cho trình duyệt, web server có thể gửi trả dữ liệu dạng XML và Ajax Engine sẽ tiếp nhận, phân tách và chuyển hóa thành XHTML+CSS cho trình duyệt hiển thị. Việc này được thực hiện trên client nên giảm tải rất nhiều cho server, đồng thời người sử dụng cảm thấy kết quả xử lý được hiển thị tức thì mà không cần nạp lại trang. Mặt khác, sự kết hợp của các công nghệ web như CSS và XHTML làm cho việc trình bày giao diện trang web tốt hơn nhiều và giảm đáng kể dung lượng trang phải nạp. Và thay vì tải lại (refresh) toàn bộ một trang, nó chỉ nạp những thông tin được thay đổi, còn giữ nguyên các phần khác. Vì thế, khi duyệt một trang hỗ trợ AJAX, người sử dụng không bao giờ nhìn thấy một cửa sổ trắng (blank) và biểu tượng đồng hồ cát - dấu hiệu cho thấy máy chủ đang thực hiện nhiệm vụ. Ví dụ, trong một website ảnh, với ứng dụng truyền thống, toàn bộ trang chứa các ảnh sẽ phải mở lại từ đầu nếu có một thay đổi nào đó trên trang. Còn khi áp dụng AJAX, DHTML chỉ thay thế đoạn tiêu đề và phần vừa chỉnh sửa, do vậy tạo nên các giao dịch trơn tru, nhanh chóng. "Mọi thao tác của người sử dụng sẽ gửi lệnh JavaScript tới bộ xử lý AJAX, thay vì tạo ra một yêu cầu HTTP (HTTP request) và truy vấn tới máy chủ", Jesse James Garrett đã ghi trong bài viết đầu tiên định nghĩa về thuật ngữ này. "Nếu cần gì từ server, như tải về bổ sung mã giao diện hay nhận dữ liệu mới, AJAX sẽ truyền yêu cầu tới máy chủ một cách không đồng bộ, thông thường sử dụng XML, mà không làm gián đoạn sự tương tác của người dùng với ứng dụng web". Tính không đồng bộ của các ứng dụng Ajax được thể hiện trong hình dưới đây.
  3. Những nhược điểm của AJAX AJAX có thể góp phần tạo nên một thế hệ mới cho ứng dụng web (như colr.org hay backpackit.com). Tuy nhiên, nó cũng là một công nghệ "nguy hiểm" khi gây ra không ít rắc rối về giao diện người dùng. Chẳng hạn, phím "Back" (trở lại trang trước) được đánh giá cao trong giao diện website chuẩn. Đáng tiếc, chức năng này không hoạt động ăn khớp với Javascript và mọi người không thể tìm lại nội dung trước đó khi bấm phím Back. Bởi vậy, chỉ một sơ xuất nhỏ là dữ liệu trên trang đã bị thay đổi và khó có thể khôi phục lại được. Đây là một trong những nguyên nhân chính khiến nhiều người không ủng hộ ứng dụng Javascript. Bên cạnh đó, mọi người không thể lưu lại địa chỉ web vào thư mục Favorite (Bookmark) để xem lại về sau. Do áp dụng lớp trung gian để giao dịch, các ứng dụng AJAX không có một địa chỉ cố định cho từng nội dung. Khiếm khuyết này làm cho AJAX dễ "mất điểm" trong mắt người dùng. Những trình duyệt hỗ trợ AJAX phải là các trình duyệt mới, hiện đại như Microsoft Internet Explorer 5.0 trở lên; browser dựa trên Gecko như Mozilla, Firefox, SeaMonkey, Epiphany, Galeon và Netscape 7.1; trình duyệt chứa KHTML API 3.2 trở lên như Konqueror, Apple Safari... Các trang Web có sử dụng AJAX :
  4. Google Maps Client Google Map MAP interface Server OGC WFS Feature Data Server Sự hồi sinh của Ajax trong vài tháng gần đây một phần nhờ những ứng dụng cải tiến của Google trong quá trình xây dựng bản đồ online. Trước đây, sơ đồ thường là tĩnh: người xem bấm vào mũi tên trái, đợi vài giây để trang web tải nội dung và dịch chuyển hình ảnh sang trái. Quá trình cứ lặp đi lặp lại như thế một cách chậm chạp và gây khó chịu cho nhiều người. Với Google Maps, người dùng có thể kéo bản đồ theo bất cứ hướng nào, xem khu vực mới nhanh chóng, và phóng to, thu nhỏ dễ dàng khi kéo con trượt Ajax. Một ví dụ khác là dịch vụ web mail. Khách hàng, sau khi xem nội dung, sẽ bấm vào một phím trên giao diện nếu muốn xóa thông tin. Máy chủ mail từ xa nhận lệnh và phản hồi lại bằng với một trang mới đã bỏ đi những phần bị xóa. Yahoo đang thử nghiệm một giao diện mới sử dụng công nghệ Ajax. Khi ta xóa một mục nào đó, và Ajax sẽ cấu hình lại trang tức thì mà không cần đợi phản hồi. Hơn nữa, khi mở một thông điệp để đọc, trình duyệt chỉ hiển thị nội dung, bởi người sử dụng đã biết tiêu đề thư và không cần phải lãng phí thời gian nhân đôi dữ liệu tải xuống nữa. Hãng dịch vụ trực tuyến lớn nhất thế giới cũng đang xây dựng một công cụ Ajax có thể nhanh chóng cập nhật thông tin khi khách hàng lựa chọn sân bay, chuyến bay, thời gian... Hãng AOL, cơ quan chủ quản của CNN.com, bắt đầu sử dụng Ajax từ mùa hè qua, cho phép khách hàng sắp xếp lại, chọn hiển thị và chuyển đổi album ảnh chỉ với một vài thao tác nhấn chuột. Tuần trước, công ty MarketWatch (Mỹ) đã quyết định cung cấp bản tin
  5. bao gồm những trích dẫn chứng khoán được cập nhật liên tục mỗi giây, với màu xanh và đỏ nhấp nháy khi giá dao động. Microsoft cũng ứng dụng Ajax trong bản cập nhật Hotmail và đang xây dựng chương trình mới hỗ trợ sự phát triển Ajax. Công nghệ thay thế XAML sẽ cho phép nhiều ứng dụng phong phú hơn hoạt động trên trình duyệt. Nhưng không như Ajax, nó chỉ chạy trên máy tính Windows. Tuy vậy, Ajax chưa thể thực hiện tất cả mọi thứ. Những ứng dụng phụ thuộc nhiều vào máy tính cố định như Photoshop của Adobe sẽ không xuất hiện sớm trên trình duyệt. Ngay cả Google cũng phải tạo một phần mềm bản đồ trên desktop (Google Earth) và yêu cầu tải chương trình về để có thể hiển thị hình ảnh 3D và thực hiện một số tính năng cải tiến khác. Hơn nữa, ứng dụng web đòi hỏi phải liên tục kết nối với Internet, khiến công việc trên sẽ trở nên khó khăn nếu bị gián đoạn. Bảo mật trong Ajax Công nghệ AJAX ẩn chứa những lỗ hổng nghiêm trọng Các ứng dụng AJAX xuất hiện ngày một nhiều đồng nghĩa với việc doanh nghiệp và người sử dụng phải đương đầu với những nguy cơ bảo mật mới. Tuy nhiên, các chuyên gia phát triển có vẻ không nhận thức đầy đủ về mối hiểm họa này. “Thông thường, tấn công một ứng dụng qua lớp web dễ hơn nhiều so với việc cố xuyên qua tường lửa hoặc tìm đường vòng tránh các hệ thống chống xâm nhập”, Billy Hoffman, Trưởng nhóm nghiên cứu thuộc công ty bảo mật Spi Dynamics (Mỹ), cho hay. Đối với người sử dụng, AJAX là phương pháp lập trình giúp website hoạt động nhanh và mang tính tương tác hơn. Google đã giới thiệu công cụ AJAX cho phép người dùng tích hợp kết quả tìm kiếm trực tiếp ngay trên trang web của họ. Các ứng dụng AJAX phổ biến khác là site chia sẻ ảnh Flickr và trang tin tức Digg. Tuy nhiên, dịch vụ e-mail hỗ trợ tổ hợp công nghệ này của Yahoo đã gặp lỗi bảo mật nghiêm trọng hồi hè năm ngoái. Kẻ tấn công đã phát tán một thông điệp chứa mã độc để truy cập e-mail của nạn nhân, tải danh sách địa chủ và gửi thư rác từ chính tài khoản bị đột nhập. Mối nguy hiểm dạng này còn được gọi là XSS (cross-site scripting) do chúng có thể mở rộng ra một vài dịch vụ khác. XSS đang nhanh chóng trở thành hình thức tấn công trực tuyến phổ biến nhất đối với hacker. Salesforce.com, PayPal và Google đều đã phải sửa lỗi bảo mật XSS trong các phần mềm của họ. Trong khi đó, giới phát triển web thường không chú ý đến việc bảo mật các đoạn mã do họ thường là chuyên gia thiết kế đồ họa, còn các chuyên gia phần mềm tạo mã cho web
  6. lại hay tỏ ra chủ quan. Hơn nữa, rất nhiều chương trình hướng dẫn sử dụng AJAX chứa đầy lỗi cơ bản mà các nhà phát triển web không hề hay biết. Dưới đây là một số các lỗi bảo mật : *Các điều khiển bảo mật trình khách: Một vài người có thể tranh luận rằng sự phụ thuộc vào việc lập trình trên trình khách gây ra khả năng mang đến một vài vấn đề định hướng. Khả năng như vậy liên quan đến việc bảo mật của các chuyên gia thiết kế kém hiệu quả thông qua các điều khiển trình khách. Trường hợp sử dụng của Ajax là khá ít cho mã scripting trình khách. Tuy nhiên các nhà thiết kế hiện nay đang phải viết cả hai loại mã trên trình chủ và trình khách. Vì vậy có thể thu hút các chuyên gia thiết kế hướng về điều khiển bảo mật trên trình khách. Rõ ràng trên trình khách là không an toàn vì các kẻ tấn công có thể thay đổi bất kỳ code nào đang chạy trên máy tính trình khách của họ. Chính vì vậy các điều khiển bảo mật cần phải bổ sung trên cả server hay luôn luôn phải được thi hành trên máy chủ. * Tăng bề mặt tấn công Một thách thức thứ hai liên quan đến sự khó khăn là việc bảo vệ sự tăng bề mặt tấn công. Ajax chắc chắn làm tăng độ phức tạp của tất cả các hệ thống. Trong quá trình mà Ajax kế tục, các chuyên gia thiết kế có thể viết mã với một số lượng lớn các trang trình chủ, mỗi trang thực hiện một vài chức năng nhỏ (trong cả ứng dụng lớn). Các trang nhỏ này sẽ là một target thêm vào cho các kẻ phá hoại và như vậy một điểm thêm nữa cần phải được bảo đảm để bảo vệ lỗ hổng mới không được giới thiệu. Điều này tương tự như các khái niệm bảo mật đã biết trong các lối đi vào của một ngôi nhà: khó khăn ở đây là chỗ việc bảo đảm cho một ngôi nhà một cửa so với cho một cái có 10 cửa. * Kẽ hở cầu nối giữa người dùng và các dịch vụ Ajax là một phương pháp mang đến cho người dùng các giao diện thân thiện hơn bởi cấu trúc dịch vụ trực tiếp của nó. Cú hích để làm cho một cặp cấu trúc server-based rời ra là một ý tưởng đầy hứa hẹn với nhiều lợi ích nhất là trong môi trường kinh doanh. Khi có nhiều hơn các “endpoint” này được phát triển và khi Ajax giới thiệu khả năng đẩy việc xử lý tinh vi hơn đến người dùng thì triển vọng chuyển rời mô hình ba lớp sẽ xảy ra. Nhìn chung, nhiều dịch vụ web bên trong hệ thống kinh doanh (cái mà tương phản với toàn bộ mạng Internet) được thiết kế cho B2B (Business to Business), cũng chính vì thế các nhà thiết kế và phát triển thường không mong muốn sự tương tác với người dùng thực sự. Sự không lo xa này dẫn đến một loạt các giả định bảo mật tồi trong suốt quá trình thiết kế. Ví dụ, các nhà thiết kế lúc ban đầu đã thừa nhận sự nhận thức, quyền năng đó và hiệu lực ở đầu vào sẽ được thực hiện ở các hệ thống thuộc tầng giữa. Ai đó cho phép “outsiders” gọi trực tiếp các dịch vụ này thông qua Ajax, một tác nhân không mong muốn đã được giới thiệu trong ảnh. Một ví dụ thực của cuộc sống như vậy là một mắt xích phù hợp từ Microsoft đến sử dụng Atlas hand-in-hand với các dịch vụ web. Giờ đây các chuyên gia thiết kế có thể viết Javascript để tạo đầu vào XML và gọi đúng dịch vụ
  7. web từ bên trong trình duyệt của trình khách. Trong quá khứ, điều này đã được thực hiện thông qua các sự ủy nhiệm dịch vụ tại server. *Sự rò rỉ thông tin : JavaScript trong Ajax nắm giữ các yêu cầu của người sử dụng và thực hiện các lệnh gọi hàm bằng văn bản đến server. Ví dụ về các yêu cầu của người dùng : • Trả về giá của sản phẩm có ID 24 • Trả về các thành phố có trong bang yêu cầu • Cập nhật tuổi của người sử dụng vào cơ sở dữ liệu Những lệnh gọi hàm chỉ ra “làm cách nào” thông tin được gửi cho mỗi yêu cầu của người sử dụng. Thông tin này, đã được gửi dưới dạng văn bản, là nơi chính yếu để kẻ tấn công xâm nhập vào bên trong ứng dụng. Từ điểm thuận lợi này, kẻ tấn công sẽ sở hữu các tên hàm, tên biến, những tham số hàm, các kiểu trả về, kiểu dữ liệu, và dãy dữ liệu có giá trị. Hình sau sẽ chỉ ra một kẻ tấn công ảo bên trong một ứng dụng web sử dụng Ajax Việc bác bỏ các yêu cầu và đoạn mã cross-site Những yêu cầu từ trình duyệt và những yêu cầu của bộ máy Ajax thì giống nhau. Server không thể phân biệt yêu cầu tạo bởi JavaScipt và yêu cầu tạo bởi hồi đáp cho một hành động của người sử dụng. Điều này có nghĩa là rất khó cho một cá nhân chứng minh rằng họ đã làm một hành động nào đó. Cũng có nghĩa là JavaScipt yêu cầu tài nguyên bằng cách sử dụng Ajax mà nó chỉ chạy background mà không có sự nhận thức của người sử dụng. Trình duyệt sẽ tự động thêm vào sự xác nhận cần thiết hoặc thông tin lưu giữ trạng thái như các cookies cho yêu cầu. Sau đó mã JavaScript có thể truy cập đáp ứng cho yêu cầu ẩn này và gửi thêm yêu cầu. Sự mở rộng khả năng của JavaScript làm tăng khả năng phá hoại của các cuộc tấn công XSS (Cross-Site Script) XSS là sự nhúng các đoạn mã như JavaScript hoặc VBScript vào trong trang được trả về cho trình duyệt của người sử dụng. Sau đó, đoạn mã sẽ được thực thi từ trình duyệt của người sử dụng, làm cho người sử dụng bị nhiễm phải nhiều loại như đánh cắp thông tin cookies, đánh cắp mật khẩu, làm bể hình ảnh, và các tấn công từ chối dịch vụ (DoS) Và ngoài ra còn một số các vấn đề về bảo mật khác liên quan đến các ứng dụng Web sử dụng AJAX : Ajax làm tăng các cuộc tấn công XSS, phối hợp và truyền bá XSS, việc cường điệu Ajax, …
Đồng bộ tài khoản