ปิดใช้งานรายการไดเรกทอรีด้วย 404 แทน 403


9

ฉันปิดการใช้งานรายชื่อไดเรกทอรีอย่างนั้น ...

Options -Indexes

เมื่อฉันลองและเข้าถึงไดเรกทอรีเช่นนี้: -

www.example.com/secret/

ฉันได้รับคำตอบที่ต้องห้าม 403

อย่างไรก็ตามฉันต้องการการตอบสนอง404 ไม่พบดังนั้นแฮกเกอร์ไม่สามารถเดาโครงสร้างไดเรกทอรีของฉันได้อย่างง่ายดาย ฉันจะทำอย่างไร



ฉันรู้ว่า แต่ไม่มีประเด็นใดที่จะทำให้มันง่ายสำหรับทุกคนโดยเฉพาะอย่างยิ่งเมื่อใช้ความพยายามเพียงเล็กน้อยในการทำให้มันยากขึ้น
Rik Heywood

คำตอบ:


8

เปิดใช้งาน mod_rewrite และ AllowOverride ใน / secret จากนั้นสร้าง. htaccess:

RewriteEngine On
RewriteBase   /secret
RewriteRule   ^$ - [R=404,L]

3

ฉันดูรอบ ๆ อินเทอร์เน็ตเพื่อหาคำตอบของปัญหาที่คล้ายกัน ในขณะที่ mod_rewrite เป็นทางออกที่เป็นไปได้ แต่ฉันพบว่าทางออกที่ดีที่สุดใช้คำสั่ง "RedirectMatch"

ดูStackOverflow: ปัญหาการเปลี่ยนเส้นทาง 403 ถูกห้ามไม่ให้ 404 ไม่พบ


1

สร้างสคริปต์ 403 ที่กำหนดเองที่ส่งกลับข้อผิดพลาด 404 แทน

ตัวอย่างเช่นใน PHP:

<?php
header("HTTP/1.0 404 Not Found");
die("<h1>404 Not Found</h1>");
?>

ตอนนี้กำหนดค่า Apache ให้ใช้สคริปต์นี้สำหรับผลลัพธ์ 403:

ErrorDocument 403 /403.php

ไม่ยุ่งกับการเขียนซ้ำและใช้งานได้กับทั้งเซิร์ฟเวอร์ทันที


สิ่งนี้จะยังคงแสดงเป็น 403 สำหรับคนที่คัดลอกเซิร์ฟเวอร์หรือไม่
IRGeekSauce

1
ไม่เซิร์ฟเวอร์จะตอบด้วยข้อผิดพลาด 404 ที่ถูกต้องเนื่องจากheader()คำสั่ง
เจอรัลด์ชไนเดอร์

-1 เนื่องจากข้อความแสดงข้อผิดพลาดที่กำหนดเองของคุณอาจเป็น! = ข้อความแสดงข้อผิดพลาดของเซิร์ฟเวอร์ (ไม่ว่าจะเป็น nging หรือ apache หรืออะไรก็ตาม) นี่เป็นวิธีแก้ไขปัญหาสุดท้ายหากไม่มีวิธีกำหนดค่าเซิร์ฟเวอร์ของคุณหรือใช้ไฟล์. htaccess นอกจากนี้โซลูชันนี้จะไม่ป้องกันคุณจาก DirBustering เว็บไซต์ของคุณเนื่องจากคุณยังสามารถบิดเบือน "ข้อความแสดงข้อผิดพลาดที่กำหนดเอง" ดังกล่าวจากข้อความแสดงข้อผิดพลาดของเซิร์ฟเวอร์
Awaaaaarghhh

0

วิธีแก้ปัญหาของฉันที่จะหยุดการแสดงเนื้อหาไดเรกทอรีเป็นรายการและแสดงข้อผิดพลาด 404 นั้นง่าย สร้างไฟล์. htaccess ในไดเรกทอรีรากของโครงการของคุณและเขียนว่าควรจะปกป้องไดเรกทอรีใด

โครงสร้างไดเรกทอรี

- your_root_directory
  - .htaccess
  - 404.html
  - index.html 
  - app
    - other files I do not want to show
  - models
    - other files I do not want to show

.htaccess

RewriteEngine On
RewriteRule   ^app/ - [R=404,L]
RewriteRule   ^models/ - [R=404,L]

ErrorDocument 404 /your_root_directory/404.html

บรรทัดที่สองของ. htaccess ไม่อนุญาตให้เข้าถึงรายการในไดเรกทอรีแอปและไดเรกทอรีย่อยทั้งหมด

บรรทัดที่สามของ. htaccess ไม่อนุญาตให้เข้าถึงไอเท็มรายการในไดเร็กทอรี model และไดเร็กทอรีย่อยทั้งหมด

บรรทัดที่สี่ของ. htaccess ตั้งค่าข้อผิดพลาด 404 ของเราเอง (หากคุณไม่ต้องการแสดงข้อผิดพลาดเริ่มต้นของ apache)

อย่าลืมล้างแคชในเบราว์เซอร์ของคุณเมื่อคุณทำงานกับ htaccess


-2

ใช้. htaccess เพื่อปกปิดข้อผิดพลาด ดูคู่มือนี้:

http://www.tarahost.net/pages/web-design/29371.php


3
ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง ลิงค์นี้ตายแล้วดังนั้นคำตอบนี้ไร้ประโยชน์แล้ว
Mark Henderson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.