9

Đây là ngữ cảnh:môi trường sản xuất - trang lỗi http 500 - không có stacktrace, vui lòng

Tôi làm việc cho một doanh nghiệp rất lớn. Ở đây, chúng ta có nhiều cụm máy chủ WebSphere Application Server, mỗi cụm chạy nhiều ứng dụng web Java EE. Hầu hết (nhưng không phải tất cả) của các ứng dụng này chứa các chỉ thị đặc biệt trong tệp web.xml của chúng để hiển thị trang lỗi tùy chỉnh khi xảy ra ngoại lệ không mong muốn. Dưới đây là một ví dụ:

<error-page> 
    <error-code>500</error-code> 
    <location>/500.jsp</location> 
</error-page> 

Bằng cách đó, tất nhiên, chúng tôi hướng đến hiển thị một trang báo lỗi thân thiện với khách hàng của chúng tôi, nhưng hơn nữa, chúng tôi chủ yếu nhằm mục đích để ẩn stacktraces thường được bao gồm trong http 500 trang sai số chuẩn .

Như bạn đã biết, các ngăn xếp này bao gồm rất nhiều dữ liệu nhạy cảm như tên gói, tên lớp và thậm chí cả tên của phương thức. Tệ nhất, đôi khi, các stacktraces chứa các ngoại lệ SQL, thường tiết lộ phần mềm máy chủ cơ sở dữ liệu nào được sử dụng. Thậm chí tệ nhất, đôi khi, các stacktraces này chứa các đường dẫn tệp và thư mục, do đó, nó có thể tiết lộ về gia đình của hệ điều hành mà Máy chủ ứng dụng WebSphere của chúng ta chạy.

Tôi có cần phải đề cập đến tất cả các dữ liệu nhạy cảm hơn khác có thể được tiết lộ bởi các stacktraces này không? (Tên người dùng, số cổng, địa chỉ IP, tên máy tính/máy chủ, tên đối tượng JNDI…)

Vì vậy, không có bất ngờ lớn ở đây, mọi doanh nghiệp lớn cần phải ẩn các ngăn xếp này cho khách hàng của họ.

Nhưng, đây là vấn đề của chúng tôi:

Đôi khi, ngay cả với một trang lỗi tùy chỉnh cũng được cấu hình trong file web.xml, WebSphere gửi trang lỗi cơ bản để trình duyệt web của khách hàng. Tôi hiểu rất rõ lý do tại sao WebSphere làm điều đó. Ví dụ, tôi biết rằng khi các tiêu đề của phản hồi http đã được cam kết, WebSphere không thể đặt lại bộ đệm của nó để gửi trang lỗi tùy chỉnh, và sau đó không thể làm tốt hơn việc gửi một trang lỗi cơ bản.

Đây là câu hỏi của tôi:

(1) Có thể cấu hình WebSphere để nó không bao giờ bao giờ bao gồm bất kỳ stacktrace trong trang lỗi cơ bản của nó? Bằng cách này, ngay cả khi, vì một số lý do kỹ thuật, WebSphere không thể gửi trang lỗi tùy chỉnh của chúng tôi, ít nhất là trang lỗi cơ bản sẽ không bao gồm bất kỳ dữ liệu nhạy cảm nào.

Làm cách nào để chúng tôi thực hiện việc này?

Cảm ơn,

+0

không thể trả lời câu hỏi cụ thể về việc vô hiệu hóa các vết đống, nhưng bạn có một máy chủ web hoặc proxy trong trước WebSphere, nơi bạn có thể thiết lập một trang lỗi ở đó? – dbreaux

+0

Khi bạn nhận được trang lỗi mặc định đang sử dụng một máy chủ web phía trước của WAS và đi qua các plugin http? – ams

+0

Chúng tôi sử dụng Máy chủ Thông tin Internet của Microsoft trước các máy chủ WebSphere của chúng tôi và chúng tôi sử dụng trình cắm thêm WebSphere (bộ lọc ISAPI) để chuyển tiếp các yêu cầu HTTP tới các máy chủ WebSphere của chúng tôi. Ngoài ra, chúng tôi sử dụng bảng điều khiển quản trị WebSphere để tạo các tệp "plugin-cfg.xml" của chúng tôi. Chúng tôi không thể chỉnh sửa các tệp này (vì nếu chúng tôi chỉnh sửa chúng để chỉnh sửa chúng, chúng tôi sẽ liên tục chỉnh sửa chúng để giữ các chỉnh sửa của chúng tôi). Vì vậy, nếu một số sửa đổi được yêu cầu trong các tệp này, bảng điều khiển quản trị WebSphere sẽ bao gồm các sửa đổi này trong khi tạo ra các tệp "plugin-cfg.xml". – closingBrace

Trả lời

1

Bạn có quyền truy cập vào cài đặt cấu hình của WAS không? Nếu vậy bạn sẽ có thể thiết lập một trang lỗi cơ bản mặc định mới trong chỉ thị ErrorDocument trong httpd.conf.

+0

Theo như tôi biết, "httpd.conf" là Apache/IHS (IBM HTTP Server) có liên quan ... Chúng tôi sử dụng Máy chủ Thông tin của Microsoft làm Máy chủ Web ở phía trước các máy chủ WebSphere của chúng tôi. Bạn có biết liệu tệp này (httpd.conf) có liên quan ngay cả khi WebSphere đứng sau Máy chủ Thông tin Internet không? – closingBrace

1

Khi closingBrace cho biết bạn nên ngăn chặn việc in ngăn xếp bằng cách định cấu hình máy chủ ứng dụng Websphere của bạn.

Hãy thử điều này:
com.ibm.ws.webcontainer.suppressHtmlRecursiveErrorOutput là web bất động sản tùy chỉnh chứa để ngăn chặn đầu ra HTML của văn bản lỗi, mà không thay đổi khai thác gỗ nội của thông điệp.

Bạn có thể đặt thuộc tính tùy chỉnh này thành true để tắt đầu ra HTML của thông báo lỗi cho người dùng và hiển thị người dùng với trang trống có mã lỗi 500.

thông số tùy chỉnh sẽ được đặt trong: Application server> properties SERVER_NAME> Web container> Tùy chỉnh>

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