Ứng dụng Web đã trở thành một thức hiện hữu ở khắp mọi nơi trên thế giới, khi mà máy tính trở thành công cụ tùy thân cho cả công việc và hoạt động vui chơi giải trí của con người. Nhưng do tính kỹ thuật cao, yếu tố phức tạp tự nhiên nên các ứng dụng Web thường không được biết đến một cách chính xác và bị hiểu nhầm trầm trọng trong cuộc sống bận rộn, xoay vần hằng ngày. Bài này hướng đến mục đích chính là cung cấp thông tin ở mức cơ bản nhất, hiểu biết thông thường nhất về chức năng và các vấn đề liên quan đến bảo mật của ứng dụng Web.
Ứng dụng Web (Web Application) hay Website Widget
Nhớ những thập kỷ trước đây, Web trở thành con đường giá rẻ cho hàng triệu doanh nghiệp thực hiện kênh thông tin liên lạc, trao đổi, giao dịch với khách hàng tương lai và các đối tác hiện tại.
Cụ thể, Web cung cấp cách thức cho các nhà phát triển thị trường biết người ghé thăm website của mình là ai và bắt đầu liên lạc với họ. Đó là yêu cầu những ai vào website đăng ký thư tin (newsletter), điền vào một form ứng dụng khi yêu cầu nội dung thông tin về sản phẩm hay cung cấp chi tiết chuẩn bị cho lần ghé thăm một website cụ thể sau.
Web cũng là kênh bán hàng thông minh cho hàng nghìn tổ chức, doanh nghiệp, lớn có, nhỏ có. Với hơn một tỷ người dùng Internet ngày nay (nguồn: Computer Industry Almanac 2006), thương mại điện tử Mỹ sử dụng khoảng 102 tỷ đô la trong năm 2006 cho giao dịch (nguồn: comScore Networks 2007).
Tất cả dữ liệu như vậy cần phải được đóng gói, lưu trữ, xử lý và truyền vận theo một cách nào đó, có thể sử dụng ngay hoặc vào một ngày nào đó sau này. Các ứng dụng Web, trong lĩnh vực đăng ký, đệ trình, truy vấn, đăng nhập, bán hàng và hệ thống quản lý nội dung chính là các website widget cho phép thực hiện tất cả công việc mong muốn.
Web chính là là yếu tố cơ bản giúp doanh nghiệp tăng cường hình ảnh trực tuyến của mình trên thế giới mạng, tạo ra và duy trì nhiều mối quan hệ đem lại lợi nhuận lâu dài với khách hàng tiềm năng và khách hàng hiện tại.
Không nghi ngờ gì là các ứng dụng Web đã trở thành thứ hiện hữu ở khắp mọi nơi trên thế giới. Nhưng do tính kỹ thuật cao và yếu tố tổng hợp phức tạp tự nhiên nên chúng không được nhiều người biết đến chính xác, thậm chí bị hiểu nhầm trầm trọng trong cuộc sống bận rộn hằng ngày.
Định nghĩa ứng dụng Web
Dưới góc độ kỹ thuật, Web được định nghĩa là môi trường có khả năng thực thi chương trình cao, cho phép tạo vô số tùy biến trên triển khai trực tiếp của một lượng lớn các ứng dụng tới hàng triệu người dùng trên thế giới. Hai thành phần quan trọng nhất của website hiện là trình duyệt Web linh hoạt và các ứng dụng Web. Tất cả mọi người đều có thể sử dụng hai thành phần mà không phải trả bất cứ khoản phí nào.
Web browser (trình duyệt web) là các ứng dụng phần mềm cho phép người dùng truy vấn dữ liệu và tương tác với nội dung nằm trên trang Web bên trong website.
Website ngày nay khác xa so với kiểu đồ họa và văn bản tĩnh của thế kỷ mười chín hay thời kỳ trước đó. Các trang Web hiện đại cho phép người dùng lấy xuống nội dung động cá nhân hóa theo thiết lập và tham chiếu riêng. Hơn nữa chúng cũng có thể chạy các script trên máy khách, có thể “thay đổi” trình duyệt Internet thành giao diện cho các ứng dụng như thư điện tử, phần mềm ánh xạ tương tác (Yahoo Mail, Google Maps).
Quan trọng nhất là website hiện đại cho phép đóng gói, xử lý, lưu trữ và truyền tải dữ liệu khách hàng nhạy cảm (như thông tin cá nhân, mã số thẻ tín dụng, thông tin bảo mật xã hội …) có thể dùng ngay hoặc dùng định kỳ về sau. Và, điều này được thực hiện qua các ứng dụng Web. Đó có thể là thành phần webmail (thư điện tử), trang đăng nhập, chương trình hỗ trợ và mẫu yêu cầu sản phẩm hay hoạt động mua bán, hệ thống quản lý nội dung, phát triển website hiện đại, cung cấp cho các doanh nghiệp phương tiện cần thiết để liên lạc với khách hàng tương lai và khách hàng hiện tại. Tất cả đều là các ví dụ phổ biến, gần gũi và sinh động của ứng dụng Web.
Dưới góc độ chức năng, ứng dụng Web là các chương trình máy tính cho phép người dùng website đăng nhập, truy vấn vào/ra dữ liệu qua mạng Internet trên trình duyệt Web yêu thích của họ. Dữ liệu sẽ được gửi tới người dùng trong trình duyệt theo kiểu thông tin động (trong một định dạng cụ thể, như với HTML thì dùng CSS) từ ứng dụng Web qua một Web Server.
Mang tính kỹ thuật nhiều hơn có thể giải thích là, các ứng dụng Web truy vấn máy chủ chứa nội dung (chủ yếu trên cơ sở dữ liệu lưu trữ nội dung) và tạo tài liệu Web động để phục vụ yêu cầu của máy khách (chính là người dùng website). Tài liệu được tạo trong kiểu định dạng tiêu chuẩn hỗ trợ trên tất cả mọi trình duyệt (như HTML, XHTML). JavaScript là một dạng script client-side cho phép yếu tố động có ở trên từng trang (như thay đổi ảnh mỗi lần người dùng di chuột tới). Trình duyệt Web chính là chìa khóa. Nó dịch và chạy tất cả script, lệnh… khi hiển thị trang web và nội dung được yêu cầu. Wikipedia, bộ bách khoa toàn thư trực tuyến lớn nhất thế giới hiện nay định nghĩa Web browser là “máy khách chung cho mọi ứng dụng web”.
Một cải tiến đáng kể khác trong quá trình xây dựng và duy trì các ứng dụng Web là chúng có thể hoạt dộng mà không cần quan tâm đến hệ điều hành hay trình duyệt chạy trên các máy client. Ứng dụng Web được triển khai ở bất cứ nơi nào có Internet, không mất phí tổn, và hầu hết không đòi hỏi yêu cầu cài đặt cho người dùng cuối.
Con số doanh nghiệp thu được lợi nhuận từ kinh doanh qua Web ngày càng tăng. Do đó, việc sử dụng ứng dụng Web và các công nghệ liên quan khác sẽ tiếp tục phát triển. Hơn nữa, khi các mạng Intranet và Extranet được thông qua, ứng dụng Web trở thành “cứ điểm” lớn trong bất kỳ cơ sở hạ tầng truyền thông nào của các tổ chức, doanh nghiệp. Phạm vi và khả năng kỹ thuật, trình độ cao được mở rộng.
Hoạt động như thế nào?
Hình bên dưới minh họa chi tiết mô hình ứng dụng Web ba tầng. Tầng đầu tiên thông thường là trình duyệt Web hoặc giao diện người dùng. Tầng thứ hai là công nghệ kỹ thuật tạo nội dung động như Java servlets (JSP) hay Active Server Pages (ASP). Còn tầng thứ ba là cơ sở dữ liệu chứa nội dung (như tin tức) và dữ liệu người dùng (như username, password, mã số bảo mật xã hội, chi tiết thẻ tín dụng).
Hình 1
Quá trình hoạt động bắt đầu với yêu cầu được tạo ra từ người dùng trên trình duyệt, gửi qua Internet tới trình chủ Web ứng dụng (Web application Server). Web ứng dụng truy cập máy chủ chứa cơ sở dữ liệu để thực hiện nhiệm vụ được yêu cầu: cập nhật, truy vấn thông tin đang nằm trong cơ sở dữ liệu. Sau đó ứng dụng Web gửi thông tin lại cho người dùng qua trình duyệt.
Hình 2
Các vấn đề bảo mật Web
Mặc dù không thể phủ nhận những cải tiến nâng cao đáng kể hiện nay, nhưng vấn đề về bảo mật trong ứng dụng Web vẫn không ngừng tăng lên. Nguyên nhân có thể xuất phát từ các đoạn mã không phù hợp. Nhiều điểm yếu nghiêm trọng hay các lỗ hổng cho phép hacker xâm nhập thẳng và truy cập vào cơ sở dữ liệu tách lấy dữ liệu nhạy cảm. Nhiều cơ sở dữ liệu chứa thông tin giá trị (như chi tiết cá nhân, thông tin tài chính) khiến chúng trở thành đích nhắm thường xuyên của hầu hết hacker. Mặc dù hoạt động tấn công phá hoại website doanh nghiệp vẫn diễn ra thường xuyên, nhưng bây giờ tin tặc thích tăng cường khả năng truy cập dữ liệu nhạy cảm nằm trên trình chủ chứa database hơn vì lợi nhuận khổng lồ từ các vụ mua bán dữ liệu đem lại.
Trong khung hoạt động mô tả ở trên, bạn có thể thấy thật dễ dàng cho một hacker truy cập nhanh chóng thông tin nằm trên cơ sở dữ liệu chỉ với một chút sáng tạo. Nếu may mắn hơn chúng có thể gặp lỗ hổng xuất phát từ sự cẩu thả hay lỗi người dùng trên các ứng dụng Web.
Như đã nói, website phụ thuộc vào cơ sở dữ liệu để phân phối thông tin được yêu cầu cho người dùng. Nếu ứng dụng Web không an toàn (như có lỗ hổng, gặp phải một kiểu kỹ thuật hacking nào đó), toàn bộ cơ sở dữ liệu chứa thông tin nhạy cảm sẽ gặp nguy hiểm nghiệm trọng.
Một số hacker có thể chèn mã độc hại vào ứng dụng Web có lỗ hổng để lừa đảo người dùng và dẫn họ tới website phishing. Kỹ thuật này được gọi là Cross-site Scripting, có thể được dùng ngay cả khi bản thân Web Server và nơi chứa cơ sở dữ liệu không có lỗ hổng nào.
Một cuộc nghiên cứu gần đây chỉ ra rằng 75% các cuộc tấn công mạng được thực hiện ở mức ứng dụng Web.
Hình 3
• Website và các ứng dụng Web liên quan luôn phải sẵn sàng 24/7 để cung cấp dịch vụ theo yêu cầu khách hàng, yêu cầu từ phía nhân viên, nhà cung cấp và nhiều người liên quan khác.
• Tường lửa, SSL không thể bảo vệ ứng dụng Web trước mọi hoạt động hacking, đơn giản vì truy cập vào website phải để ở chế độ public để bất kỳ ai cũng có thể ghé thăm website được. Tất cả hệ thống cơ sở dữ liệu hiện đại (như Microsoft SQL Server, Oracle, MySQL) đều có thể truy cập qua một số cổng cụ thể (như cổng 80, 443). Nếu muốn, một người nào đó có thể kết nối trực tiếp tới cơ sở dữ liệu một cách hiệu quả khi vượt qua cơ chế bảo mật của hệ điều hành. Các cổng này để mở nhằm cho phép liên lạc với hoạt động giao thông mạng hợp pháp, và do đó cũng hình thành nên lỗ hổng lớn nguy hiểm.
• Các ứng dụng Web thường truy cập dữ liệu cuối như cơ sở dữ liệu khách hàng, điều khiển dữ liệu có giá trị và do đó rất khó để có thể tuyệt đối an toàn. Lúc này truy cập dữ liệu thường không kèm script cho phép đóng gói và truyền tải dữ liệu. Nếu một hacker nhận ra điểm yếu trong một script, anh ta có thể dễ dàng mở lại lưu lượng sang khu vực khác và chia lẻ bất hợp pháp chi tiết cá nhân người dùng, dù đôi khi không hề chủ tâm làm điều đó
• Hầu hết ứng dụng Web đều là tự tạo, do đó ít có được các kiểm tra trình độ hơn so với phần mềm cùng loại. Do đó các ứng dụng tùy biến thường dễ bị tấn công hơn.
Có thể nói ứng dụng Web là một cổng vào (gateway) của cơ sở dữ liệu, nhất là các ứng dụng tùy biến. Chúng không được phát triển với mức bảo mật tốt nhất vì không phải qua các kiểm tra bảo mật thông thường. Nói chung, bạn cần trả lời câu hỏi: “Phần nào trên website chúng ta nghĩ là an toàn nhưng lại mở cửa cho các cuộc tấn công?” và “Dữ liệu nào chúng ta đem vào một ứng dụng khiến nó thực hiện một số điều không nên làm?”.
Đó là công việc của phần mềm rà soát lỗ hổng Web.