Xóa X-Powered-By


137
  1. Làm cách nào để xóa tiêu đề X-Powered-By trong PHP? Tôi đang sử dụng Máy chủ Apache và tôi sử dụng php 5.21. Tôi không thể sử dụng hàm header_remove trong php vì nó không được hỗ trợ bởi 5.21. Tôi đã sử dụng Header unset X-Powered-By, nó hoạt động trên máy cục bộ của tôi, nhưng không phải trên máy chủ sản xuất của tôi.

  2. Nếu php không hỗ trợ header_remove () cho ver <5.3, có cách nào khác không?


Phiên bản PHP khi sản xuất: PHP / 5.2.13 Phiên bản PHP trên máy cục bộ: PHP / 5.2.11 Phiên bản Apache khi sản xuất: Apache / 2.2.15 (Unix) Phiên bản Apache trên máy cục bộ: Apache 2.0.63 (sử dụng MAMP trên máy Mac)
Castor

Cũng xem ra cho trứng Phục sinh .
Pacerier

Câu trả lời:


236

Tôi nghĩ rằng điều đó được kiểm soát bởi expose_phpcài đặt trong PHP.ini :

expose_php = off

Quyết định xem PHP có thể tiết lộ sự thật rằng nó được cài đặt trên máy chủ hay không (ví dụ: bằng cách thêm chữ ký của nó vào tiêu đề máy chủ Web). Nó không phải là mối đe dọa bảo mật theo bất kỳ cách nào, nhưng nó giúp xác định xem bạn có sử dụng PHP trên máy chủ của mình hay không.

Không có rủi ro bảo mật trực tiếp, nhưng như David C lưu ý, việc phơi bày một phiên bản PHP lỗi thời (và có thể dễ bị tổn thương) có thể là một lời mời để mọi người dùng thử và tấn công nó.


30
"Nó không phải là mối đe dọa an ninh theo bất kỳ cách nào". Điều này có thể không đúng với các phiên bản cũ hơn của php đang chạy trên máy chủ được lưu trữ. Tôi đã nghe nói rằng tin tặc có thể khai thác các 'lỗ hổng' được ghi chép tốt trong các phiên bản trước. Tốt hơn là nên che giấu sự thật này ....
David

14
"Hoàn toàn cập nhật" là một imo dương tính giả. Tốt hơn hết là vô hiệu hóa thông tin. Có thể một phiên bản được phát hành ngày hôm qua có thể đã có một mối đe dọa bị phơi bày, và tùy thuộc vào mức độ tích cực của chu kỳ nâng cấp của bạn, có thể trong một thời gian. Tốt hơn để giữ cho họ đoán hoàn toàn. Tôi ẩn càng nhiều càng tốt bao gồm các phiên bản nginx.
Mike Purcell

1
@David, ý anh ta là nó không thêm vào mối đe dọa bảo mật mà bạn đã phải đối mặt.
Pacerier

7
Bạn có thể và nên báo cáo một cách có chủ đích một giá trị xấu cho tiêu đề X-Powered-By. Ví dụ: nếu bạn đang chạy PHP, bạn có thể gửi tiêu đề X-Powered-By: ASP.NET như một cách để làm chậm những kẻ tấn công khỏi ID cấu hình phần mềm trên máy chủ web của bạn. Gửi những kẻ tấn công của bạn xuống một con ngỗng hoang dã đuổi theo để làm chậm quá trình quét của chúng.
Chaoix

3
@Pacerier, tất nhiên nó làm tăng thêm mối đe dọa an ninh. Hacker quét 1000 trang web để tìm kiếm con mồi dễ dàng ... có tiêu đề này khi ở phiên bản cũ có nghĩa là máy chủ hiện được nhắm mục tiêu khi trước đó sẽ bị bỏ qua. Nó thêm vào mối đe dọa an ninh một cách trực tiếp. Ngay cả khi cập nhật, nó có thể thêm vào mối đe dọa trong một cửa sổ thời gian ngắn, nơi có một bản cập nhật chưa được áp dụng.
Nigel B. Peck


50

Nếu bạn không thể vô hiệu hóa các expose_php chỉ thị để talkativeness câm PHP (yêu cầu truy cập vào php.ini ), bạn có thể sử dụng Apache Headerchỉ để loại bỏ các lĩnh vực tiêu đề:

Header unset X-Powered-By

3
Điều đó không làm việc trên máy chủ sản xuất của tôi. Nó đang làm việc trên máy cục bộ của tôi. Bất kỳ ý tưởng như tại sao điều này đang xảy ra?
Castor

@Castor Phiên bản máy chủ nào bạn đang sử dụng cục bộ và trên máy sản xuất? Bất kỳ sự khác biệt trong thiết lập PHP?
Pekka

Phiên bản PHP khi sản xuất: PHP / 5.2.13 Phiên bản PHP trên máy cục bộ: PHP / 5.2.11 Phiên bản Apache khi sản xuất: Apache / 2.2.15 (Unix) Phiên bản Apache trên máy cục bộ: Apache 2.0.63 (sử dụng MAMP trên máy Mac)
Castor

1
@Castor: Mod_headers có khả dụng trên cả hai máy chủ không? Và bạn có được phép ghi đè FileInfo không (xem httpd.apache.org/docs/2.2/mod/core.html#allowoverride )?
Gumbo

@Gumbo Có, mod_headers có sẵn trên cả hai máy chủ. Và vâng, tôi được phép ghi đè lên FileInfo.
Castor

24
if (function_exists('header_remove')) {
    header_remove('X-Powered-By'); // PHP 5.3+
} else {
    @ini_set('expose_php', 'off');
}

14

Nếu bạn có quyền truy cập vào php.ini, hãy đặt expose_php = Off.


3
Vâng, tôi đã làm việc này từ mã php. tiêu đề ("X-Powered-By:"); Đặt tiêu đề X-Powered-By thành không có gì loại bỏ nó. Cảm ơn tất cả thời gian và đề xuất của bạn.
Castor


4

Hãy thử thêm một cuộc gọi tiêu đề () trước khi gửi tiêu đề, như:

header('X-Powered-By: Our company\'s development team');

bất kể cài đặt expose_php trong php.ini


0

Giải pháp này hiệu quả với tôi :)

Vui lòng thêm dòng dưới đây trong kịch bản và kiểm tra.

Cài đặt cấp độ Ngnix / Apache vv có thể không được yêu cầu.

header("Server:");
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.