Ajax

992 views

Published on

aaa

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
992
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
40
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Ajax

  1. 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 webkể 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áctá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ủaGmail, Google Suggest và Google Maps đã khiến cho Ajax được chú ý một cách đặcbiệ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ểncô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 Explorer4.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 BillGates 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 JamesGarrett trên trang Adaptive Path. Từ đó, AJAX trở thành trung tâm trong mọi câu chuyệnliê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ăngmạ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. 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àntrê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ôngqua HTTP (HyperText Transfer Protocol - Giao thức truyền tải qua siêu liên kết). Nhữnghoạ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áychủ 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ủathô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ờigian, 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 Enginenằ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ầugửi resquest và nhận response do Ajax Engine thực hiện. Thay vì trả dữ liệu dưới dạngHTML 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ệthiể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ờingườ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àygiao diện trang web tốt hơn nhiều và giảm đáng kể dung lượng trang phải nạp. Và thayvì 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ôngbao 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ấymáy chủ đang thực hiện nhiệm vụ. Ví dụ, trong một website ảnh, với ứng dụng truyềnthố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êntrang. 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 ramột yêu cầu HTTP (HTTP request) và truy vấn tới máy chủ", Jesse James Garrett đã ghitrong 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áchkhô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ủangườ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. 3. Những nhược điểm của AJAXAJAX có thể góp phần tạo nên một thế hệ mới cho ứng dụng web (như colr.org haybackpackit.com). Tuy nhiên, nó cũng là một công nghệ "nguy hiểm" khi gây ra không ítrắ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 đánhgiá cao trong giao diện website chuẩn. Đáng tiếc, chức năng này không hoạt động ănkhớ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ímBack. 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ôiphụ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 ủnghộ ứ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ư MicrosoftInternet 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. 4. Google Maps Client Google Map MAP interface Server OGC WFS Feature Data ServerSự 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ủaGoogle trong quá trình xây dựng bản đồ online. Trước đây, sơ đồ thường là tĩnh: ngườixem 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 ảnhsang 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 chonhiề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ộtphí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ồilạ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ụcnà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óngcậ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, chophé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 thaotác nhấn chuột. Tuần trước, công ty MarketWatch (Mỹ) đã quyết định cung cấp bản tin
  5. 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ươngtrình mới hỗ trợ sự phát triển Ajax. Công nghệ thay thế XAML sẽ cho phép nhiều ứngdụ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ênmá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àomá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êucầ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ảitiế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ôngviệc trên sẽ trở nên khó khăn nếu bị gián đoạn.Bảo mật trong AjaxCông nghệ AJAX ẩn chứa những lỗ hổng nghiêm trọngCá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êngia 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ênqua 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íchhợ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ếnkhá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ậtnghiê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ựctuyến phổ biến nhất đối với hacker. Salesforce.com, PayPal và Google đều đã phải sửalỗ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ã dohọ 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. 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âyra 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ệcbả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àngtrê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 đangchạ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ôngMộ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ỗitrang 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 đượcbả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áiniệ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ệcbả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ấutrú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ệcxử 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ớitoà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ùngthự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 đó chophé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 mongmuố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ắtxích phù hợp từ Microsoft đến sử dụng Atlas hand-in-hand với các dịch vụ web. Giờ đâycá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. 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ệnthô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ọihà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ệuNhữ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ườisử 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ôngxâ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ênhà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 AjaxViệc bác bỏ các yêu cầu và đoạn mã cross-siteNhữ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. Serverkhô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ằnghọ đã 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ạybackground mà không có sự nhận thức của người sử dụng. Trình duyệt sẽ tự động thêmvà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ôngXSS (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ủangườ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 tincookies, đá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ệccường điệu Ajax, …

×