Apache trả lại php dưới dạng văn bản
Khi chạy tập lệnh của tôi, tôi gặp một số lỗi như thế này. Cảnh báo. Không thể sửa đổi thông tin tiêu đề - tiêu đề đã được gửi bởi (đầu ra bắt đầu tại /some/file. php. 12) trong /some/file. php trực tuyến Show
09 10 11 12 13 14 15 apache. htaccess cho phép người dùng định cấu hình các thư mục của máy chủ web mà họ kiểm soát mà không cần sửa đổi tệp cấu hình chính Mặc dù điều này hữu ích, nhưng điều quan trọng cần lưu ý là việc sử dụng các tệp 2 làm chậm Apache, vì vậy, nếu bạn có quyền truy cập vào tệp cấu hình máy chủ chính (thường được gọi là 3), bạn nên thêm logic này vào đó dưới một khối 4 Nhìn thấy. htaccess trong trang web tài liệu HTTPD của Apache để biết thêm chi tiết về những gì. tập tin htaccess có thể làm Phần còn lại của tài liệu này sẽ thảo luận về các tùy chọn cấu hình khác nhau mà bạn có thể thêm vào 2 và chức năng của chúng Hầu hết các khối sau sử dụng lệnh IfModule để chỉ thực thi các lệnh bên trong khối nếu mô-đun tương ứng được cấu hình đúng và máy chủ đã tải nó. Bằng cách này, chúng tôi sẽ cứu máy chủ của mình khỏi bị sập nếu mô-đun không được tải Chuyển hướngĐôi khi chúng ta cần thông báo cho người dùng rằng tài nguyên đã được di chuyển, tạm thời hoặc vĩnh viễn. Đây là những gì chúng tôi sử dụng 6 và 7 cho
Các giá trị có thể có cho tham số đầu tiên được liệt kê bên dưới. Nếu tham số đầu tiên không được bao gồm, nó sẽ mặc định là 8dài hạn Trả về trạng thái chuyển hướng vĩnh viễn (301) cho biết tài nguyên đã được di chuyển vĩnh viễn nhiệt độTrả về trạng thái chuyển hướng tạm thời (302). Đây là mặc định nước sôiTrả về trạng thái "Xem Khác" (303) cho biết tài nguyên đã được thay thế Không cònTrả về trạng thái "Đã qua" (410) cho biết tài nguyên đã bị xóa vĩnh viễn. Khi trạng thái này được sử dụng, đối số URL sẽ được bỏ qua Tài nguyên có nguồn gốc chéoNhóm lệnh đầu tiên kiểm soát quyền truy cập CORS (Chia sẻ tài nguyên gốc chéo) vào tài nguyên từ máy chủ. CORS là cơ chế dựa trên tiêu đề HTTP cho phép máy chủ chỉ ra nguồn gốc bên ngoài (tên miền, giao thức hoặc cổng) mà trình duyệt sẽ cho phép tải tài nguyên Vì lý do bảo mật, các trình duyệt hạn chế các yêu cầu HTTP có nhiều nguồn gốc được bắt đầu từ các tập lệnh. Ví dụ: XMLHttpRequest và Fetch API tuân theo chính sách cùng nguồn gốc. Một ứng dụng web sử dụng các API đó chỉ có thể yêu cầu tài nguyên từ cùng một nguồn gốc mà ứng dụng đã được tải trừ khi phản hồi từ các nguồn gốc khác bao gồm các tiêu đề CORS thích hợp Truy cập CORS chungChỉ thị này sẽ thêm tiêu đề CORS cho tất cả các tài nguyên trong thư mục từ bất kỳ trang web nào ________số 8 Trừ khi bạn ghi đè lệnh sau này trong cấu hình hoặc trong cấu hình của một thư mục bên dưới nơi bạn đặt lệnh này, mọi yêu cầu từ các máy chủ bên ngoài sẽ được thực hiện, đây không phải là điều bạn muốn Một cách khác là nêu rõ tên miền nào có quyền truy cập vào nội dung trang web của bạn. Trong ví dụ bên dưới, chúng tôi hạn chế quyền truy cập vào tên miền phụ của trang web chính của chúng tôi (ví dụ. com). Điều này an toàn hơn và có thể là những gì bạn định làm
Hình ảnh gốc chéoNhư đã báo cáo trong Blog Chromium và được ghi lại trong Cho phép sử dụng hình ảnh và canvas trên nhiều nguồn gốc có thể dẫn đến các cuộc tấn công lấy dấu vân tay Để giảm thiểu khả năng xảy ra các cuộc tấn công này, bạn nên sử dụng thuộc tính 9 trong hình ảnh bạn yêu cầu và đoạn mã bên dưới trong 2 của bạn để đặt tiêu đề CORS từ máy chủ
Hướng dẫn khắc phục sự cố Google Fonts của Google Chrome cho chúng tôi biết rằng mặc dù Google Fonts có thể gửi tiêu đề CORS với mọi phản hồi, một số máy chủ proxy có thể loại bỏ nó trước khi trình duyệt có thể sử dụng nó để hiển thị phông chữ 3 Thời gian nguồn gốc chéoĐặc tả Cấp độ Thời gian Tài nguyên 1 xác định giao diện cho các ứng dụng web để truy cập thông tin thời gian đầy đủ cho các tài nguyên trong tài liệu Tiêu đề phản hồi Timing-Allow-Origin chỉ định các nguồn gốc được phép xem giá trị của các thuộc tính được truy xuất thông qua các tính năng của API Thời gian tài nguyên, nếu không sẽ được báo cáo là 0 do các hạn chế về nguồn gốc chéo Nếu một tài nguyên không được cung cấp với một 31 hoặc nếu tiêu đề không bao gồm nguồn gốc, thì sau khi thực hiện yêu cầu, một số thuộc tính của đối tượng 32 sẽ được đặt thành 0 6 Trang / Thông báo lỗi tùy chỉnhApache cho phép bạn cung cấp các trang lỗi tùy chỉnh cho người dùng tùy thuộc vào loại lỗi mà họ nhận được Các trang lỗi được trình bày dưới dạng URL. Các URL này có thể bắt đầu bằng dấu gạch chéo (/) cho các đường dẫn web cục bộ (so với DocumentRoot) hoặc là một URL đầy đủ mà khách hàng có thể giải quyết Xem tài liệu Chỉ thị ErrorDocument trên trang web tài liệu HTTPD để biết thêm thông tin 7 ngăn ngừa lỗiCài đặt này ảnh hưởng đến cách MultiViews hoạt động đối với thư mục mà cấu hình áp dụng cho Tác dụng của 33 như sau. nếu máy chủ nhận được yêu cầu cho /some/dir/foo, nếu /some/dir đã bật 33 và /some/dir/foo không tồn tại, thì máy chủ sẽ đọc thư mục tìm kiếm các tệp có tên foo. * và giả mạo một cách hiệu quả một bản đồ loại đặt tên cho tất cả các tệp đó, gán cho chúng các loại phương tiện và mã hóa nội dung giống nhau nếu khách hàng yêu cầu một trong số chúng theo tên. Sau đó, nó chọn kết quả phù hợp nhất với yêu cầu của khách hàng Cài đặt vô hiệu hóa 33 cho thư mục mà cấu hình này áp dụng và ngăn Apache trả về lỗi 404 do viết lại khi thư mục có cùng tên không tồn tại 1 Loại phương tiện và mã hóa ký tựApache sử dụng mod_mime để gán siêu dữ liệu nội dung cho nội dung được chọn cho phản hồi HTTP bằng cách ánh xạ các mẫu trong URI hoặc tên tệp cho các giá trị siêu dữ liệu Ví dụ: phần mở rộng tên tệp của tệp nội dung thường xác định loại phương tiện Internet, ngôn ngữ, bộ ký tự và mã hóa nội dung của nội dung. Thông tin này được gửi trong các thông báo HTTP có chứa nội dung đó và được sử dụng trong thương lượng nội dung khi chọn các lựa chọn thay thế, sao cho tùy chọn của người dùng được tôn trọng khi chọn một trong số các nội dung có thể để phân phát Thay đổi siêu dữ liệu cho tệp không thay đổi giá trị của tiêu đề Lần sửa đổi cuối cùng. Do đó, các bản sao được lưu trong bộ nhớ cache trước đó vẫn có thể được sử dụng bởi máy khách hoặc proxy, với các tiêu đề trước đó. Nếu bạn thay đổi siêu dữ liệu (ngôn ngữ, loại nội dung, bộ ký tự hoặc mã hóa), bạn có thể cần phải 'chạm' vào các tệp bị ảnh hưởng (cập nhật ngày sửa đổi gần đây nhất của chúng) để đảm bảo rằng tất cả khách truy cập đều nhận được tiêu đề nội dung đã sửa Cung cấp tài nguyên với các loại phương tiện thích hợp (a. k. a. loại MIME)Liên kết các loại phương tiện với một hoặc nhiều tiện ích mở rộng để đảm bảo tài nguyên sẽ được phục vụ phù hợp Máy chủ nên sử dụng văn bản/javascript cho các tài nguyên JavaScript như được chỉ ra trong đặc tả HTML 2 Đặt thuộc tính Charset mặc địnhMỗi phần nội dung trên web đều có một bộ ký tự. Hầu hết, nếu không muốn nói là tất cả, nội dung là UTF-8 Unicode Sử dụng AddDefaultCharset để phục vụ tất cả các tài nguyên được gắn nhãn là 36 hoặc 37 với bộ ký tự 38 6 Đặt bộ ký tự cho các loại phương tiện cụ thểPhục vụ các loại tệp sau với tham số 39 được đặt thành 38 bằng cách sử dụng lệnh AddCharset có sẵn trong 61 0 Mod_rewrite và các chỉ thị RewriteEnginemod_rewrite cung cấp một cách để sửa đổi các yêu cầu URL đến một cách linh hoạt, dựa trên các quy tắc biểu thức chính quy. Điều này cho phép bạn ánh xạ các URL tùy ý vào cấu trúc URL nội bộ của mình theo bất kỳ cách nào bạn muốn Nó hỗ trợ vô số quy tắc và vô số điều kiện quy tắc đính kèm cho mỗi quy tắc để cung cấp một cơ chế thao tác URL thực sự linh hoạt và mạnh mẽ. Các thao tác URL có thể phụ thuộc vào các thử nghiệm khác nhau. biến máy chủ, biến môi trường, tiêu đề HTTP, dấu thời gian, tra cứu cơ sở dữ liệu bên ngoài và nhiều chương trình hoặc trình xử lý bên ngoài khác, có thể được sử dụng để đạt được đối sánh URL chi tiết Bật mod_rewriteMẫu cơ bản để bật 62 là điều kiện tiên quyết cho tất cả các tác vụ khác sử dụng Các bước cần thiết là
1 Buộc httpsCác quy tắc Viết lại này sẽ chuyển hướng từ phiên bản không an toàn 69 sang phiên bản an toàn 70 của URL như được mô tả trong wiki HTTPD của Apache 2 Nếu bạn đang sử dụng cPanel AutoSSL hoặc phương pháp webroot Let's Encrypt để tạo chứng chỉ SSL, chứng chỉ sẽ không thể xác thực nếu yêu cầu xác thực được chuyển hướng đến HTTPS. Bật (các) điều kiện bạn cần 3 Chuyển hướng từ www. URLNhững chỉ thị này sẽ viết lại 71 thành 72 Bạn không nên sao chép nội dung ở nhiều nguồn gốc (có và không có www); Điều này có thể gây ra các vấn đề về SEO (nội dung trùng lặp) và do đó, bạn nên chọn một trong các lựa chọn thay thế và chuyển hướng sang trang khác. Bạn cũng nên sử dụng các URL chính tắc để cho biết công cụ tìm kiếm sẽ thu thập dữ liệu URL nào (nếu chúng hỗ trợ tính năng này) Đặt biến 73, để cho phép viết lại tự động chuyển hướng với lược đồ phù hợp (http hoặc https) Theo mặc định, quy tắc giả định rằng cả hai môi trường HTTP và HTTPS đều khả dụng để chuyển hướng 4 Chèn www. ở đầu URLCác quy tắc này sẽ chèn 74 vào đầu URL. Điều quan trọng cần lưu ý là bạn không bao giờ được cung cấp cùng một nội dung dưới hai URL khác nhau Điều này có thể gây ra các vấn đề về SEO (nội dung trùng lặp) và do đó, bạn nên chọn một trong các phương án thay thế và chuyển hướng phương án khác. Đối với các công cụ tìm kiếm hỗ trợ chúng, bạn nên sử dụng URL Canonical để cho biết công cụ tìm kiếm sẽ thu thập dữ liệu URL nào Đặt biến 73, để cho phép viết lại tự động chuyển hướng với lược đồ phù hợp (http hoặc https) Theo mặc định, quy tắc giả định rằng cả hai môi trường HTTP và HTTPS đều khả dụng để chuyển hướng. Nếu chứng chỉ SSL của bạn không thể xử lý một trong các miền được sử dụng trong quá trình chuyển hướng, bạn nên bật điều kiện Những điều sau đây có thể không phải là ý kiến hay nếu bạn sử dụng tên miền phụ "thực" cho một số phần nhất định trên trang web của mình 5 Tùy chọn khungVí dụ bên dưới gửi tiêu đề phản hồi 76 với giá trị DENY, thông báo cho các trình duyệt không hiển thị nội dung của trang web trong bất kỳ khung nào để bảo vệ trang web khỏi clickjacking Đây có thể không phải là cài đặt tốt nhất cho mọi người. Bạn nên đọc về hai giá trị có thể khác cho tiêu đề 76. 78 và 79 Mặc dù bạn có thể gửi tiêu đề 76 cho tất cả các trang trên trang web của mình, nhưng điều này có nhược điểm tiềm ẩn là nó cấm ngay cả mọi khung nội dung của bạn (e. g. khi người dùng truy cập trang web của bạn bằng trang kết quả Tìm kiếm hình ảnh của Google) Tuy nhiên, bạn nên đảm bảo rằng bạn gửi tiêu đề 76 cho tất cả các trang cho phép người dùng thực hiện thao tác thay đổi trạng thái (e. g. , các trang chứa liên kết mua bằng một cú nhấp chuột, trang xác nhận thanh toán hoặc chuyển khoản ngân hàng, các trang thực hiện thay đổi cấu hình vĩnh viễn, v.v. ) 6 Chính sách bảo mật nội dung (CSP)CSP (Chính sách bảo mật nội dung) giảm thiểu rủi ro của kịch bản chéo trang và các cuộc tấn công chèn nội dung khác bằng cách đặt một 12 cho phép các nguồn nội dung đáng tin cậy cho trang web của bạn Không có chính sách nào phù hợp với tất cả các trang web, ví dụ bên dưới là hướng dẫn để bạn sửa đổi cho trang web của mình Chính sách ví dụ dưới đây Để làm cho việc triển khai CSP của bạn dễ dàng hơn, bạn có thể sử dụng trình tạo tiêu đề CSP trực tuyến. Bạn cũng nên sử dụng trình xác thực để đảm bảo tiêu đề của bạn thực hiện những gì bạn muốn. 7 truy cập thư mụcLệnh này sẽ ngăn truy cập vào các thư mục không có tệp chỉ mục ở bất kỳ định dạng nào mà máy chủ được định cấu hình để sử dụng, chẳng hạn như 13 hoặc 14 8 Chặn quyền truy cập vào các tập tin và thư mục ẩnTrong các hệ thống Macintosh và Linux, các tệp bắt đầu bằng dấu chấm sẽ bị ẩn khỏi chế độ xem nhưng không truy cập được nếu bạn biết tên và vị trí của chúng. Các loại tệp này thường chứa các tùy chọn của người dùng hoặc trạng thái được bảo toàn của tiện ích và có thể bao gồm các vị trí khá riêng tư, chẳng hạn như thư mục 15 hoặc 16 Thư mục 17 đại diện cho tiền tố đường dẫn chuẩn (RFC 5785) cho "các vị trí nổi tiếng" (e. g. 18, 19), và do đó, quyền truy cập vào nội dung hiển thị của nó sẽ không bị chặn 9 Chặn quyền truy cập vào các tệp có thông tin nhạy cảmChặn quyền truy cập vào các tệp nguồn và sao lưu mà một số trình soạn thảo văn bản có thể để lại và có thể gây rủi ro bảo mật khi bất kỳ ai có quyền truy cập vào chúng Cập nhật biểu thức chính quy 20 trong ví dụ sau để bao gồm bất kỳ tệp nào có thể kết thúc trên máy chủ sản xuất của bạn và có thể tiết lộ thông tin nhạy cảm về trang web của bạn. Những tập tin này có thể bao gồm. tệp cấu hình hoặc tệp chứa siêu dữ liệu về dự án trong số những tệp khác 0 Bảo mật truyền tải nghiêm ngặt HTTP (HSTS)Nếu người dùng gõ 72 trong trình duyệt của họ, ngay cả khi máy chủ chuyển hướng họ đến phiên bản bảo mật của trang web, điều đó vẫn để lại cơ hội (kết nối HTTP ban đầu) để kẻ tấn công hạ cấp hoặc chuyển hướng yêu cầu Tiêu đề sau đảm bảo rằng trình duyệt chỉ kết nối với máy chủ của bạn qua HTTPS, bất kể người dùng nhập gì vào thanh địa chỉ của trình duyệt Xin lưu ý rằng Bảo mật vận chuyển nghiêm ngặt không thể hủy bỏ được và bạn phải đảm bảo có thể phục vụ trang web qua HTTPS miễn là bạn đã chỉ định trong chỉ thị 22. Nếu bạn không còn kết nối TLS hợp lệ nữa (e. g. do chứng chỉ TLS đã hết hạn), khách truy cập của bạn sẽ thấy thông báo lỗi ngay cả khi cố gắng kết nối qua HTTP 1 Ngăn một số trình duyệt MIME đánh hơi phản hồi
Một số trình duyệt cũ hơn sẽ thử và đoán loại nội dung của tài nguyên, ngay cả khi nó không được thiết lập đúng trên cấu hình máy chủ. Điều này làm giảm nguy cơ bị tấn công tải xuống theo ổ đĩa và rò rỉ dữ liệu giữa các nguồn gốc 2 Chính sách giới thiệuChúng tôi bao gồm tiêu đề 01 trong phản hồi cho các tài nguyên có thể yêu cầu (hoặc điều hướng đến) các tài nguyên khác Điều này bao gồm các loại tài nguyên thường được sử dụng. HTML, CSS, XML/SVG, tài liệu PDF, tập lệnh và công nhân Để ngăn hoàn toàn rò rỉ liên kết giới thiệu, thay vào đó hãy chỉ định giá trị 02. Lưu ý rằng hiệu ứng này có thể tác động tiêu cực đến các công cụ phân tích Sử dụng các dịch vụ như bên dưới để kiểm tra Chính sách giới thiệu của bạn
3 Vô hiệu hóa phương thức TRACE HTTPPhương pháp TRACE, mặc dù có vẻ vô hại, nhưng có thể được tận dụng thành công trong một số trường hợp để đánh cắp thông tin xác thực của người dùng hợp pháp. Xem Tấn công theo dõi chéo trang (XST) và Hướng dẫn kiểm tra bảo mật web OWASP Các trình duyệt hiện đại hiện ngăn các yêu cầu TRACE được thực hiện qua JavaScript, tuy nhiên, các cách khác để gửi yêu cầu TRACE bằng trình duyệt đã được phát hiện, chẳng hạn như sử dụng Java Nếu bạn có quyền truy cập vào tệp cấu hình máy chủ chính, hãy sử dụng lệnh 03 để thay thế 4 Xóa tiêu đề phản hồi X-Powered-ByMột số framework như PHP và ASP. NET đặt tiêu đề 04 chứa thông tin về chúng (e. g. tên của họ, số phiên bản) Tiêu đề này không cung cấp bất kỳ giá trị nào và trong một số trường hợp, thông tin mà nó cung cấp có thể làm lộ các lỗ hổng 5 Nếu có thể, bạn nên tắt tiêu đề 04 ở cấp độ ngôn ngữ/khuôn khổ (e. g. đối với PHP, bạn có thể làm điều đó bằng cách thiết lập như sau trong 06 6 Xóa chân trang thông tin máy chủ do Apache tạoNgăn không cho Apache thêm một dòng cuối trang có chứa thông tin về máy chủ vào các tài liệu do máy chủ tạo ra (e. g. thông báo lỗi, danh sách thư mục, v.v. ). Xem Chỉ thị Chữ ký Máy chủ để biết thêm thông tin về những gì chữ ký máy chủ cung cấp và Chỉ thị ServerTokens để biết thông tin về cách định cấu hình thông tin được cung cấp trong chữ ký 7 Sửa các tiêu đề AcceptEncoding bị hỏngMột số proxy và phần mềm bảo mật xáo trộn hoặc loại bỏ tiêu đề HTTP 07. Xem Đẩy ngoài Gzipping để được giải thích chi tiết hơn 8 Nén các loại phương tiệnNén tất cả đầu ra được gắn nhãn bằng một trong các loại phương tiện sau bằng cách sử dụng Chỉ thị AddOutputFilterByType 9 Bản đồ tiện ích mở rộng cho các loại phương tiệnÁnh xạ các phần mở rộng tên tệp sau sang loại mã hóa được chỉ định bằng cách sử dụng AddEncoding để Apache có thể phục vụ các loại tệp với tiêu đề phản hồi 08 thích hợp (điều này sẽ KHÔNG làm cho Apache nén chúng. ). Nếu các loại tệp này được cung cấp mà không có tiêu đề phản hồi 08 thích hợp, các ứng dụng khách (e. g. trình duyệt) sẽ không biết rằng trước tiên họ cần giải nén phản hồi và do đó, sẽ không thể hiểu nội dung 0 Hết hạn bộ nhớCung cấp các tài nguyên có ngày hết hạn trong tương lai xa bằng cách sử dụng mô-đun mod_expires và các tiêu đề Kiểm soát bộ đệm và Hết hạn Tại sao mã PHP của tôi hiển thị dưới dạng văn bản?Nếu vì lý do nào đó, PHP chưa được cài đặt trên máy chủ HOẶC PHP không được định cấu hình để hoạt động với máy chủ web của bạn , thì nó không còn nữa . Nó chỉ được xem là một tệp văn bản được hiển thị dưới dạng văn bản HTML trong trình duyệt.
Tại sao PHP không hoạt động trong HTML?Tệp php luôn có thể đọc và hiển thị mã HTML, nhưng HTML không tự động phân tích cú pháp mã php. Để làm như vậy, bạn sẽ cần điều chỉnh. tệp htaccess . Khi đã xong, mã php sẽ hiển thị trong các tệp HTML mà không gặp sự cố. |