2012-08-23 28 views
5

Tôi có một ứng dụng web chứa hàng trăm tệp HTML, JavaScript và hình ảnh. Những tệp này nằm trong thư mục gốc:Di chuyển tài nguyên theo WEB-INF

my_root-- 
    -- html 
    -- js 
    -- images 

Các thư mục này chứa một số thư mục con.

Vì lý do bảo mật, tôi cần di chuyển tất cả các tài nguyên này trong thư mục WEB-INF để chúng không thể truy cập trực tiếp.

Hiện tại các tệp JSP và servlet đã nằm trong thư mục WEB-INF.

Phương pháp đơn giản nhất để di chuyển an toàn tất cả các thư mục HTML/JavaScript/images trong WEB-INF mà không phá vỡ tất cả liên kết/chuyển tiếp tới tài nguyên trong các thư mục này và đảm bảo các tài nguyên này không thể truy cập trực tiếp?

Tôi đang sử dụng máy chủ WebSphere và WebLogic.

+1

Bạn có thể đưa ra một ví dụ đơn giản để giúp làm cho nó rõ ràng hơn không - ý bạn là bạn muốn ngăn người dùng truy cập '/examplepage.jsp' bằng cách di chuyển nó sang WEB-INF? Làm thế nào để người dùng truy cập các trang hiện tại - bạn đang sử dụng một khung như Struts, v.v ...? – GrahamMc

Trả lời

0

Bạn có thể sử dụng công cụ rất đơn giản như notepad ++ và sử dụng tính năng findAndReplace. Eclipse cũng có thể làm điều này nhưng nó sẽ khó khăn để tìm kiếm mọi tham chiếu một cách hiệu quả.

Lưu ý rằng có nhiều cách khác để ngăn người dùng truy cập vào hình ảnh của bạn. Nó có lẽ là dễ dàng hơn để chỉ để lại những thứ mà họ đang có và hướng dẫn WebSphere ngừng phục vụ những hình ảnh từ thư mục hình ảnh

+1

Tôi chán nản với đề xuất – Kowser

+0

lý do tại sao @Kowser đó? – ricardoespsanto

+0

'với một công cụ rất đơn giản như notepad ++ và sử dụng tính năng findAndReplace' :-(đây là ý tưởng rất tồi Tôi nghĩ rằng – Kowser

9

phương pháp đơn giản nhất đối với tôi một cách an toàn di chuyển tất cả html/js/images thư mục dưới là gì WEB-INF mà không vi phạm tất cả các liên kết/chuyển tiếp đến tài nguyên trong các thư mục này và đảm bảo rằng các tài nguyên này không thể truy cập trực tiếp?

Bạn đang mắc lỗi sai ở đây. Tài nguyên HTML/JS/image (và CSS) cần để có thể truy cập trực tiếp. Đối với JSP, câu chuyện là khác nhau, một số trong số đó, nếu không phải tất cả, cần phải được một servlet xử lý trước (ví dụ: để lấy một số danh sách từ DB để hiển thị trong bảng). Nếu những JSP đó đã được truy cập trực tiếp, thì bước servlet đó sẽ bị bỏ qua hoàn toàn, hoàn toàn không phải là những gì bạn muốn (JSP kết thúc "trống rỗng"; không có bất kỳ dữ liệu nào từ DB). Đó là lý do tại sao họ nên được ẩn trong /WEB-INF để ngăn chặn truy cập trực tiếp mà không cần phải thông qua một servlet tiền xử lý trước. Ngoài ra, trong trường hợp khung MVC dựa trên servlet, cách này toàn bộ quy trình khung MVC (thu thập các tham số yêu cầu, chuyển đổi/xác nhận chúng, cập nhật giá trị mô hình, gọi hành động, v.v.) sẽ bị bỏ qua.

Yêu cầu chức năng cụ thể của bạn không rõ ràng (toàn bộ câu hỏi không có nghĩa gì cả; câu trả lời chỉ là "không làm điều đó"), nhưng nếu bạn thực sự muốn hạn chế quyền truy cập vào tài nguyên tĩnh không cần phải được một servlet xử lý trước chỉ cho một số người dùng nhất định, sau đó bạn cần phải thực hiện một hệ thống xác thực/đăng nhập. Bạn có thể sử dụng xác thực quản lý container hoặc homegrow một Filter cho việc này.

Các vấn đề liên quan