2012-05-05 29 views
63

thời gian gần đây tôi phát hiện ra về cái gọi là "easter egg URLs" trong PHP:Tôi làm cách nào để vô hiệu hóa URL "trứng Phục sinh" của PHP?

Đây là bốn chuỗi QUERY bạn có thể thêm vào cuối của một trang web PHP để xem (hơi) ẩn hình ảnh hoặc trang web:

  1. ?=PHPE9568F36-D428-11d2-A769-00AA001ACF42

một Đây là thú vị nhất, và hiển thị một "quả trứng Phục sinh" i mage của một con thỏ trong nhà (thỏ của Sterling Hughes, có tên là Carmella), một con chó màu nâu trên cỏ, một con chó Scotland Terrier đen, một biểu tượng php màu sắc vẽ tay, bút chì màu vẽ nguệch ngoạc, một chàng trai với breadsticks (trông giống như bút chì hoặc khoai tây chiên) dính ra khỏi của mình miệng như một walrus, hoặc một con voi PHP logo.

enter image description here

người khác bao gồm:

  • ?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 (PHP Logo)
  • ?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 (Zend biểu tượng)
  • ?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000 (PHP Tín)

tôi bị sốc khi phát hiện ra rằng điều này không hoạt động trên nhiều trang web, kể cả trang web của riêng tôi. Tôi nghĩ rằng điều này là ngu ngốc và muốn vô hiệu hóa nó, nhưng từ những gì tôi nghe thấy cách duy nhất để làm điều đó là trong php.ini với expose_php = Off, và nó can't be set at runtime với ini_set().

Tôi không có quyền truy cập trực tiếp vào php.ini trên máy chủ trực tiếp. Tuy nhiên, tôi đã tìm ra cách bỏ tiêu đề X-Powered-By bằng cách sử dụng Header unset X-Powered-By trong .htaccess hoặc header('X-Powered-By: ') trong mã PHP.

Có cách nào khác để vô hiệu hóa những "quả trứng Phục sinh" này hay tôi phải thay đổi cài đặt này trong chính php.ini (và đó thực sự là cách chính xác/duy nhất để vô hiệu hóa các URL này)?

+8

Họ don' làm tổn thương bất cứ ai, vậy tại sao lại bận tâm? – DanRedux

+62

Bởi vì tôi nghĩ rằng nó ngu ngốc, và cho thấy thực tế rằng bạn đang sử dụng PHP. –

+2

Cách tôi nhìn thấy nó, nếu bạn muốn sử dụng toàn bộ động cơ mà mọi người đầu tư rất nhiều thời gian vào, và tất cả họ muốn đổi lại là để lại một vài quả trứng vô sinh trong đó, tại sao lại không? : D Thật vui. Tôi đặt cược bạn đã vui vẻ ngay cả khi chỉ tìm kiếm chúng! – DanRedux

Trả lời

32

Một HTACCESS nhanh chóng viết lại toàn cầu có thể regex chuỗi chính xác ngay trên mỗi URL do đó loại bỏ các phần thú vị duy nhất của PHP mà không cần chạm file ini cũng không cần một chức năng ở phần đầu của mỗi tập tin.

đã không được thử nghiệm này, nhưng điều này sẽ làm việc:

RewriteEngine On 
RewriteCond %{QUERY_STRING} \PHPE9568F36-D428-11d2-A769-00AA001ACF42\ [NC] 
RewriteRule .* - [F] 

Tất nhiên, chỉ cần sao chép 2 dòng cuối cùng cho mỗi truy vấn có thể khác, hoặc viết một regex chung chung hơn. Tôi không giỏi với regex. :)

Phiên bản này bao gồm tất cả những niềm vui Phục sinh trứng và đã được tìm thấy here:

RewriteEngine On 
RewriteCond %{QUERY_STRING} \=PHP[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12} [NC] 
RewriteRule .* - [F] 
+0

Bất kỳ đầu mối nào chính xác như thế nào để thực hiện điều đó? Tôi có thể tự nghiên cứu nó, nhưng nếu bạn có thể cung cấp một ví dụ để loại bỏ một trong những URL sẽ là một trợ giúp lớn. Bất kỳ ý tưởng nào về việc liệu chỉ thị ini mà tôi trích dẫn có thực sự đúng hay không và sẽ loại bỏ những điều này? –

+0

Cảm ơn ý tưởng, quy tắc cụ thể này mang lại cho tôi "lỗi máy chủ nội bộ", nhưng liên kết của nhận xét khác (hiện đã bị xóa) có liên kết hoạt động: https://akeeba.assembla.com/code/master-htaccess /git/nodes/htaccess.txt Dưới "Disallow PHP Easter Eggs" Hãy thêm nó vào bài viết của bạn cho người khác! –

+0

Có, chỉ thị ini ẩn tất cả các dấu hiệu của cuộc sống PHP, bao gồm 5 url trứng phục sinh (số 4 bạn đã đề cập và 1 thực hiện truy vấn MySQL với tham số GET "truy vấn" nếu MySQL được cài đặt). – DanRedux

58

trong php.ini

; Decides whether PHP may expose the fact that it is installed on the server 
; (e.g. by adding its signature to the Web server header). It is no security 
; threat in any way, but it makes it possible to determine whether you use PHP 
; on your server or not. 
; http://php.net/expose-php 
expose_php = Off 

này sẽ có hiệu quả loại bỏ những quả trứng Phục sinh

+5

OP cho biết "Tôi không có quyền truy cập trực tiếp vào php.ini trên máy chủ trực tiếp." – Raz

+42

Mặc dù nó không trả lời câu hỏi của OP, nó vẫn hữu ích cho những người ngại trong câu hỏi này, những người có quyền truy cập vào php.ini. – Wodin

+3

Nếu bạn không có quyền truy cập vào php.ini, bạn nên báo cáo điều này với quản trị viên hệ thống để tắt cài đặt này trên môi trường sản xuất. Vì vậy, tôi sẽ đề nghị câu trả lời này. –

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