การลบ X-Powered-By


137
  1. ฉันจะลบ X-Powered-By header ใน PHP ได้อย่างไร ฉันอยู่บนเซิร์ฟเวอร์ Apache และฉันใช้ php 5.21 ฉันไม่สามารถใช้ฟังก์ชัน header_remove เป็น php ได้เนื่องจากไม่รองรับ 5.21 ฉันใช้ Header unset X-Powered-By มันทำงานบนเครื่องของฉัน แต่ไม่ใช่ในเซิร์ฟเวอร์การผลิตของฉัน

  2. หาก php ไม่สนับสนุน header_remove () สำหรับ ver <5.3 จะมีทางเลือกอื่นหรือไม่?


รุ่น PHP ในการผลิต: PHP / 5.2.13 รุ่น PHP ในท้องถิ่น: PHP / 5.2.11 รุ่น Apache ในการผลิต: Apache / 2.2.15 (Unix) รุ่น Apache ในท้องถิ่น: Apache 2.0.63 (โดยใช้ MAMP บน Mac)
Castor

ระวังไข่อีสเตอร์ด้วย
Pacerier

คำตอบ:


236

ฉันคิดว่าถูกควบคุมโดยการexpose_phpตั้งค่าในPHP.ini :

expose_php = off

ตัดสินใจว่า PHP อาจเปิดเผยข้อเท็จจริงว่าติดตั้งบนเซิร์ฟเวอร์หรือไม่ (เช่นโดยการเพิ่มลายเซ็นให้กับส่วนหัวของเว็บเซิร์ฟเวอร์) มันไม่ได้คุกคามความปลอดภัย แต่อย่างใด แต่ก็เป็นไปได้ที่จะตรวจสอบว่าคุณใช้ PHP บนเซิร์ฟเวอร์ของคุณหรือไม่

ไม่มีความเสี่ยงด้านความปลอดภัยโดยตรง แต่อย่างที่ David C ตั้งไว้การเปิดเผย PHP เวอร์ชันที่ล้าสมัย (และอาจมีช่องโหว่) อาจเป็นคำเชิญให้ผู้คนลองและโจมตี


30
'ไม่มีภัยคุกคามความปลอดภัย แต่อย่างใด' สิ่งนี้อาจไม่จริงสำหรับ php รุ่นเก่าที่ทำงานบนเซิร์ฟเวอร์ที่โฮสต์ ฉันได้ยินมาว่าแฮ็กเกอร์สามารถใช้ประโยชน์จาก 'หลุม' ที่บันทึกไว้อย่างดีในรุ่นที่ผ่านมา มันเป็นการดีกว่าที่จะปิดบังความจริงข้อนี้ ...
ดาวิด

14
การเป็น "เต็มทันสมัย" เป็นเท็จบวก เป็นการดีกว่าที่จะปิดการใช้งานข้อมูลทั้งหมด อาจเป็นไปได้ว่ารุ่นที่เผยแพร่เมื่อวานนี้อาจมีภัยคุกคามที่เปิดเผยอยู่แล้วและขึ้นอยู่กับว่าวงจรการอัปเกรดของคุณนั้นก้าวร้าวมากเพียงใด ดีกว่าเพื่อให้พวกเขาคาดเดาทั้งหมด ฉันซ่อนตัวให้มากที่สุดเท่าที่จะทำได้รวมถึงรุ่น nginx ด้วย
Mike Purcell

1
@ David สิ่งที่เขาหมายถึงคือมันไม่ได้เพิ่มการคุกคามความปลอดภัยที่คุณเผชิญอยู่แล้ว
Pacerier

7
คุณสามารถและควรรายงานค่าที่ไม่ดีสำหรับส่วนหัว X-Powered-By อย่างมีจุดประสงค์ ตัวอย่างเช่นหากคุณใช้งาน PHP คุณสามารถส่งส่วนหัว X-Powered-By: ASP.NET เป็นวิธีในการชะลอการโจมตีจาก ID'ing การกำหนดค่าซอฟต์แวร์บนเว็บเซิร์ฟเวอร์ของคุณ ส่งผู้โจมตีของคุณลงในการไล่ล่าห่านป่าเพื่อชะลอการสแกนของพวกเขา
Chaoix

3
@Pacerier แน่นอนว่ามันเพิ่มความเสี่ยงด้านความปลอดภัย แฮกเกอร์สแกนเว็บไซต์กว่า 1,000 แห่งที่กำลังมองหาเหยื่อง่าย ๆ ... การมีส่วนหัวนี้เมื่อใช้เวอร์ชันเก่าหมายความว่าตอนนี้เซิร์ฟเวอร์จะถูกกำหนดเป้าหมายเมื่อก่อนหน้านี้จะถูกเพิกเฉย มันเพิ่มการคุกคามความปลอดภัยในทางตรง แม้จะได้รับการปรับปรุงให้ทันสมัยมันสามารถเพิ่มภัยคุกคามในช่วงเวลาสั้น ๆ เมื่อมีการปรับปรุงที่ยังไม่ได้นำมาใช้
Nigel B. Peck


50

หากคุณไม่สามารถปิดใช้งานคำสั่งexpose_phpเพื่อปิดเสียงพูดคุยของ PHP (ต้องเข้าถึงphp.ini ) คุณสามารถใช้คำสั่งของ ApacheHeaderเพื่อลบฟิลด์ส่วนหัว:

Header unset X-Powered-By

3
ไม่ทำงานบนเซิร์ฟเวอร์ที่ใช้งานจริงของฉัน มันทำงานบนเครื่องท้องถิ่นของฉันแม้ว่า มีความคิดเห็นเกี่ยวกับสาเหตุที่เกิดขึ้นอย่างไร
ลูกล้อ

@Castor คุณใช้เซิร์ฟเวอร์รุ่นใดในเครื่องและในเครื่อง ความแตกต่างในการตั้งค่า PHP คืออะไร?
Pekka

รุ่น PHP ในการผลิต: PHP / 5.2.13 รุ่น PHP ในท้องถิ่น: PHP / 5.2.11 รุ่น Apache ในการผลิต: Apache / 2.2.15 (Unix) รุ่น Apache ในท้องถิ่น: Apache 2.0.63 (โดยใช้ MAMP บน Mac)
Castor

1
@Castor: mod_headers มีอยู่ในเซิร์ฟเวอร์ทั้งสองหรือไม่ และคุณได้รับอนุญาตให้แทนที่FileInfo (ดูhttpd.apache.org/docs/2.2/mod/core.html#allowoverride ) หรือไม่
Gumbo

@Gumbo ใช่ mod_headers มีอยู่ในทั้งสองเซิร์ฟเวอร์ และใช่ฉันได้รับอนุญาตให้แทนที่ FileInfo
ลูกล้อ


14

หากคุณมีการเข้าถึง php.ini expose_php = Offเป็นชุด


3
ฉันได้งานนี้จากรหัส PHP ส่วนหัว ("X-Powered-By:"); การตั้งค่าส่วนหัว X-Powered-By ให้ไม่มีการลบออก ขอบคุณสำหรับเวลาและข้อเสนอแนะของคุณ
ลูกล้อ


4

ลองเพิ่มการโทรส่วนหัว () ก่อนส่งส่วนหัวเช่น:

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

คำนึงถึงการตั้งค่า expose_php ใน php.ini


0

วิธีนี้ใช้ได้ผลกับฉัน :)

กรุณาเพิ่มบรรทัดด้านล่างในสคริปต์และตรวจสอบ

อาจไม่จำเป็นต้องตั้งค่าระดับ Ngnix / Apache ฯลฯ

header("Server:");
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.