3. Cấu trúc luận văn
2.6.3. Hạn chế của máy quét lỗ hổng Web hiện nay
Bộ phận thu thập dữ liệu của một máy quét lỗ hổng bảo mật Web là thành phần hạn chế nhất. Các rào cản về dữ liệu hợp lý(ví dụ như mã đã được mã hóa) đã được đề cập trong phần 2.4. Khi không có một cơ chế thích hợp, một ứng dụng web không thể thu thập toàn bộ thông tin cần thiết. Đây là rào cản trong quá trình thu thập thông tin. Ngày càng nhiều ứng dụng Web sử dụng trang web động bằng JavaScript và AJAX. Hầu hết các trình thu thập dữ liệu trên các phản hồi của HTTP. Nội dung của một phản hồi HTTP được quét các thẻ <a>, form, frame, những thứ có thể được đặt trong một hàng đợi để thu
thập thêm thông tin. Rõ ràng, như vậy một số dữ liệu JavaScript bị bỏ qua bởi các trình thu thập thông tin. Vì lý do này, một số các trình thu thập thông tin của máy quét lỗ hổng Web có một công cụ phân tích cú pháp JavarScrip cơ bản, hoạt động tốt cho các trường hợp đơn giản.
Tuy nhiên, với sự tiến bộ của các thư viện JavaScript như jQuery5, sự phức tạp của JavaScript trong các ứng dụng web tăng đáng kể, nó làm cho các công cụ phân tích, về cơ bản bị lỗi (chúng ta sẽ thấy điều này trong việc đánh giá trong chương 3). Không chỉ thẻ <a> phục vụ (serve) được dùng để liên kết, mà còn tất cả các thành phần HTML khác có thể được sử dụng cho tương tác người dùng.Ví dụ, một thẻ <div> đơn giản có thể được sử dụng để kích hoạt yêu cầu AJAX hoặc tải các trang web khác. Cách duy nhất để giữ được trạng thái là hoàn trả toàn bộ trang web. Tuy nhiên, điều này sẽ làm ảnh hưởng đến hiệu suất.
Thu thập dữ liệu một ứng dụng Web hiện đại là sự kết hợp giữa đầy đủ và hiệu quả. Mesbah et al. trình bày một cách thu thập thông tin của các ứng dụng web sử dụng AJAX trong một tài liệu được công bố [MBD08]. Công cụ Crawljax của họ sử dụng một trình duyệt Web bình thường, chẳng hạn như Mozilla Firefox 6, để phân tích và làm cho các trang Web, bao gồm cả mã JavaScript phức tạp. Crawljax quan sát cây DOM cho sự thay đổi trạng thái và phát hiện các yêu cầu AJAX, nhưng nó rất chậm. Trong khi Crawljax cũng có giới hạn của nó - các trạng thái cần thu thập có thể phát triển theo cấp số nhân, làm giảm tối đa khả năng thu thập theo chiều sâu của các ứng dụng Web - nó cho thấy một cách tiếp cận thú vị để thu thập nội dung động.
Những hạn chế của các trình thu thập thông tin biện minh cho việc thực thi các quy trình làm việc thông qua một ứng dụng Web. Hầu hết các ứng dụng web có ít nhất một chức năng, một quy trình làm việc là cần thiết - đăng nhập người dùng. Vì vậy, máy quét lỗ hổng Web tự động có khả năng ghi lại một chuỗi đăng nhập mà các công việc như sau. Người sử dụng vào các ứng dụng web và mọi yêu cầu của HTTP về tất cả các thông số được ghi lại cho lần sử dụng sau. Sau đó, tên người dùng và mật khẩu có thể được cung cấp và liên kết như “đăng xuất " (logout) có thể được đặt trong một danh sách các liên kết bị loại trừ, sẽ không được theo dõi bởi các module thu thập thông tin, để trạng thái ứng dụng không phải lập lại. Tính năng này cũng có thể được sử dụng để chỉ đạo các thành phần thu thập thông tin hướng tới vùng khác của các ứng dụng Web.
Bằng cách này, ghi lại một trình tự đăng nhập đáp ứng hai mục đích: (i) Để chỉ định các trình thu thập các khu vực nó không thể truy cập tự động, bởi vì một trình tự nhất định của các bước được yêu cầu, và (ii) để thiết lập các ứng dụng vào các trạng thái “ đăng nhập " (login). Chúng ta sẽ kiểm tra một máy ghi trình tự điển hình trong mục