2013-08-12 23 views
10

Sau khi nâng cấp lên php 5.5.1 và apache 2.4.6, kiểm tra các tiêu đề nhất định hiện đã bị hỏng (cụ thể là kiểm tra HTTP_X_REQUESTED_WITH).Tên tiêu đề có dấu gạch dưới bị bỏ qua trong php 5.5.1/apache 2.4.6

Qua thử nghiệm tiếp theo, tôi nhận thấy rằng bất kỳ tiêu đề tùy chỉnh nào chứa dấu gạch dưới đều bị bỏ qua (điều này có nghĩa là nó không hiển thị trong mảng $_SERVER của PHP). Vì vậy, nếu tôi thêm tiêu đề có tên my-header, nó sẽ có sẵn là $_SERVER['HTTP_MY_HEADER'], nhưng nếu tôi thử thêm tiêu đề my_header, nó không có sẵn trong $_SERVER.

+1

Vì bạn đang sử dụng Apache, để bạn có được những tiêu đề chính xác khi sử dụng [ 'apache_request_headers'] (http://uk3.php.net/manual/en/function.apache-request-headers.php) – naththedeveloper

+1

@ FDL có, tôi nhận được tiêu đề chính xác với apache_request_headers –

+3

Nên thực hiện nghiên cứu trước khi đăng ... Đây là một tính năng được ghi trong apache 2.4: "Dịch tiêu đề cho biến môi trường nghiêm ngặt hơn trước để giảm thiểu một số chéo có thể Các tiêu đề chứa các ký tự không hợp lệ (bao gồm cả dấu gạch dưới) hiện đang giảm âm thầm ". - https://httpd.apache.org/docs/trunk/new_features_2_4.html –

Trả lời

13

Đây là tính năng được ghi lại trong apache 2.4. Xem httpd.apache.org/docs/trunk/new_features_2_4.html

dịch của tiêu đề để biến môi trường là nghiêm ngặt hơn trước để giảm thiểu một số cuộc tấn công cross-site-scripting thể qua phun tiêu đề. Tiêu đề chứa các ký tự không hợp lệ (bao gồm cả dấu gạch dưới) hiện đang bị thả âm thầm.

+3

Và làm thế nào để bạn có được xung quanh 'tính năng' này? –

+0

Chỉ cần thay thế _ bởi -: "custom_api_key" -> "custom-api-key" –

+1

Nếu (như tôi) bạn đang mắc kẹt với các giao diện cũ không thể sửa đổi được, tài liệu sẽ giải thích cách giải quyết: http: // httpd.apache.org/docs/trunk/env.html#fixheader – MattMatt