Cơ bản về bảo mật trong
Ajax
Công nghệ Ajax đã xuất hiện trên các trangweb từ nhiều năm trước nhờ có
thuộctính tươngtác của nó. Google Suggest và Google Mapslà haiứng dụng của
công nghệ này từ sớm. Ngày nay,cáccông tyđangnghĩ xem làm thế nàođể có thể
tận dụng được nó,các chuyên gia thiết kế web thì cố gắng họchỏi nó, các chuyên
gia bảomật cố gắngđể bảo đảm nó,còn các thanhtra viên về chống thâmnhập
đang nghĩ làm thế nàođể có thể hack nó. Nói gìđi chăngnữa thìbất cứ một kỹ
thuậtmới nào mà có thể cải thiện thônglượng của các server, cung cấp việc
chuyển trạng thái linhhoạt hơn và tạora các ứng dụng web phongphú hơn đến
người sử dụng thì cũng rốt cuộclà tìmra một vị trí đứng chân trong lĩnhvực công
nghiệp.
Ajax được xem như làbước tiếp theo của thế hệ “web2.0”. Mục đích của bài nàylà
nhằmmục đích giới thiệu mộtvàivấn đề cơ bản về bảo mậttrong côngnghệ web
Ajax hiện đại. Với Ajax, các ứng dụngcó thể khó cho việc kiểm trado đó các chuyên
gia bảomật đã chuẩn bị cácphươngpháp phù hợp và các công cụ cần thiết khác.
Chúng tasẽ thảo luận xemcó cần nói lời chia tay với cácứng dụng web cũ thay vào
đó là việc sử dụngAjax để rồi cũng có nghĩa là chúng ta đón chào một vài lỗ hổng
bảo mật mới. Bâygiờ chúng ta sẽ thảo luận vắn tắt về các kỹ thuật bên trong của
Ajax và xét ảnh hưởng các ứng dụng Ajaxvới bảo mật như thế nào.
Cốt lõi của Ajax
Các ứng dụng web thôngthường làmviệc trên mô hình
đồng bộ,có nghĩalà khicó yêu cầu web của ai đó thìđi
cùng với nó là một đáp ứng thực hiệnmột vài hành
động tronglớp trình diễn(presentation). Ví dụ: việc
click mộtlink haynhấn chuột vàonút submitsẽ tạo ra
một yêu cầu đến webserver với các thamsố cóliên
quan. Thói quen “click và wait”này đã giới hạn sự
tương tác của các ứng dụng. Vấn đề này được làm giảm
bớt bằng việc sử dụngcông nghệ Ajax(Asychronous Javascript and XML).Với mục
đíchcủa bài viếtnày tôi chỉ xemAjax như một phương thức gọi không đồng bộ của
nó tác động đến web servermàkhôngphải refreshtoàn bộ trangweb. Loại tương
tác này có thể thựchiện đượcbới ba thành phần: ngôn ngữ scripting trìnhkhách,
đối tượngXmlHttpRequest(XHR) và XML.
Sau đây chúng ta hãy thảo luận vắn tắt các thành phần này:
Ngôn ngữ scripting trình khách đượcsử dụng để khởi tạocác lệnh callđến server
sau đó được sử dụng để truy cậpchương trình và updateDOMbên trong trình
duyệt của trình khách. Sự lựachọn phổ biến nhất trên trình khách là Javascript bởi
vì sự hiển thị của nó với các trình duyệt là khá tốt.Thànhphần thứ hailà đốitượng
XHR, đây mới thựcsự là trái tim của kỹ thuật này. Các ngôn ngữ như Javascriptsử
dụngđối tượng XHRđể gửi cácyêu cầuđến web server ẩn dưới kịch bảnvà sử
dụngHTTP như một trung gian truyền tải. XML sẽ định dạng dữ liệu chocác
messagesmàcó thể thayđổi.
Nhiều trang sử dụngJSON(JavascriptObject Notation) trong phầnXML bởi vì cú
pháp củanó dễ hơn. Khi sử dụng Javascriptđể phântích cú pháp JSON thìnó đơn
giản nhiều. Mặt khác ai đó cũngcó thể sử dụngXpath để phân tích quay trở lại cú
pháp XML.Cũng có nhiềutrang Ajaxkhông sử dụngXML hay JSON,thayvào đó chỉ
gửi nhữngmẩu HTML đã được chèn động tínhvào trong trangweb.
Như đã chỉ ra ở trên,Ajax không phải là một công nghệ mới toanh mà thay vàođó
là một sự kết hợpcác công nghệ tồn tại trước đó cùng nhauđể phát triển các ứng
dụngweb cótính tương tác cao. Trong thực tế, tất cả các thành phần trên đã xuất
hiện trướcvàđã đượcsử dụngnhiều vớiIE5.0. Các chuyên giathiết kế đã đưa ra
các trường hợp sử dụngAjax như là “Suggestive” textboxes, và các bảng danhsách
dữ liệu tự độngrefresh. Tất cả các yêu cầu XHRvẫn được xử lý bởi server side
frameworks điển hình như các chuẩn giống J2EE, .Net và PHP.Tính không đồngbộ
của cácứngdụng Ajaxđược thể hiện trong hình dưới đây.
Bảo mật Ajax.
Chúng tađã ônlại về Ajax, bâygiờ hãy thảoluận về việc bảo mậtnó. Ajaxkhông có
lỗ hổngbảo mật mới trong lĩnhvực ứng dụng web.Thayvào đó các ứng dụngđối
mặtvới các vấn đề bảo mật như các ứngdụngweb cổ điển. Không may, các hành
độngchung nhất của Ajax lại khôngđược phát triển, việc này đã để lại rất nhiều
vùng có các vấn đề sai. Việcnày baogồmsự nhậnthức đúng đắn, sự cấp phép, điều
khiểntruy cậpvà phê chuẩn đầu vào. Một vàilĩnh vựctiềmnăng có liên quan đến
sử dụng Ajax như sau:
* 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ộcvào việclậptrình trên trình
khách gây ra khả năng mangđến mộtvài vấn đề định hướng. Khả năng như vậy
liên quanđến việc bảo mậtcủa các chuyên gia thiết kế kémhiệuquả thôngquacác
điều khiển trìnhkhách. Như chúngta đã thảo luậntrong phần trước trường hợp
sử dụng của Ajaxlà khá ít cho mã scripting trìnhkhách. Tuy nhiên các nhà thiết kế
hiện nayđangphải viết cả hai loạimã trên trình chủ và trình khách. Vì vậy có thể
thu hútcác chuyên giathiết kế hướng về điều khiển bảo mật trên trìnhkhách.Rõ
ràng trên trình kháchlà không an toànvì các kẻ tấn công cóthể thay đổi bất kỳ
code nàođang chạy trênmáy tính trìnhkhách của họ.Chínhvì vậycác điều khiển
bảo mật cần phải bổ sung trêncả server hay luôn luôn phải được thi hànhtrên
máy chủ.
* Tăng bề mặt tấn công
Một thách thức thứ hai liênquanđến sự khó khănlà việc bảo vệ sự tăngbề mặt tấn
công. Ajax chắc chắnlàmtăng độ phức tạp củatất cả các hệ thống. Trong quá trình
mà Ajaxkế tục, các chuyêngia thiết kế có thể viết mã với một số lượng lớn các
trangtrì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 targetthêm vàocho 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áckhái niệm bảo mật đã biếttrong 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ộtphươngpháp mangđếncho người dùng cácgiao 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ộtcặp cấutrúc server-
based rời ra là mộtý tưởng đầy hứa hẹn với nhiều lợi ích nhấtlà trongmôi trường
kinh doanh.Khi có nhiềuhơn các “endpoint” này được phát triển và khiAjax giới
thiệukhả năngđẩy việc xử lý tinhvi hơnđến ngườidùng thì triển vọng chuyển rời
mô hình balớp sẽ xảy ra.
Nhìn chung,nhiều dịch vụ webbên trong hệ thống kinhdoanh(cái mà tương phản
với toàn bộ mạngInternet)đượcthiết kế cho B2B (BusinesstoBusiness), cũng
chínhvì thế các nhà thiết kế và pháttriển thường không mong muốnsự 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ácgiả đị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úcban đầu đã thừa nhận
sự nhậnthức,quyền năng đó và hiệu lực ở đầu vàosẽ đượcthựchiện ở các hệ
thống thuộc tầng giữa. Ai đó chophép “outsiders”gọi trực tiếpcác dịch vụ này
thông qua Ajax, mộttá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ốngnhư vậy là mộtmắt xích phù hợp từ Microsoftđến sử
dụngAtlas hand-in-handvới cácdịch vụ web. Giờ đây cácchuyên gia thiết kế có
thể viết Javascript để tạo đầu vào XMLvà gọi đúng dịch vụ web từ bêntrongtrình
duyệt của trình khách. Trong quá khứ, điều này đã được thực hiện thôngqua các
sự ủy nhiệm dịch vụ tại server.