Ne (PHP kullanarak) sayfalarına doğrudan erişimi engellemek için kullanmak denetler?

3 Cevap

Bu, tanımlanmış bir sabit kontrol url kontrol ya da herhangi başka yolları için daha iyi mi ....

gibi bir şey

if(!defined(INCLUDED))

arasında

if($_SERVER['REQUEST_URI'] == $_SERVER['PHP_SELF'])

Bir dosyaya erişildiğinde ne yollar doğrudan .. Ayrıca, bu sayfalara doğrudan erişimi engellemek için önemli olduğunu kontrol edebilirim ... (Ben bir site bu yüzden karşı giderdim doğrudan erişen, tasarlandığı şekilde çalışması gerektiğini anlamaya, ama ) düşünceleriniz nelerdir

3 Cevap

Bir sabiti tanımlama kod ton delving olmadan ... Sadece senin satır eklemek için önce bir sabit tanımlamak, ve dahil dosyasında tanımlanan olmadığını görmek için kontrol edin, muhtemelen bu konuda gitmek için en iyi yoldur ...

main file

<?php
define("IS_INCLUDED",true);
include "included_file.php";
?>

included_file.php

<?php
if(!defined("IS_INCLUDED")){
header("Location: error_page.php");
}
?>

Bu sayfaya erişmek eğer Bu şekilde, sabit tanımlı olmayacak ve onlar bunları olmak istediğiniz yere yönlendirileceksiniz.

Bunları doğrudan ulaşılabilir mümkün istemiyorsanız, size dosyalarınızı kesmek gerekmez. Sadece kamuya görüntülenebilir dizin dışındaki bir dizine koyun ve onlar halk tarafından erişilemiyor. PHP betikleri hala kolayca erişmek mümkün olacak.

Ben genellikle / kullanımı görmek Bu sorunun üç yaklaşım vardır:

  1. Dosya URL yoluyla doğrudan yüklenebilir demek değilse, yerine belge kök altında daha (php.ini 'de tanımlı) dahil bir dizine koymak;
  2. Eğer yapamıyorsan (1) belge kök altında 'include' gibi bir veya daha fazla dizinleri oluşturmak ve mod_rewrite ile bunlara erişimi kısıtlamak; veya
  3. Birisi doğrudan ya da değil erişirse farketmez böylece dahil edilir benim herhangi bir dosya zaten işlevlerini ancak bir şey oluşur bulmak eğilimindedir.

(2) bir örnek olarak:

RewriteEngine On
RewriteRule ^include/ [R=404,L]

Bu dizini dahil vurmak için herhangi bir girişimleri bulunamadı hatası bir dosya gönderir.