Impedisci uno script lato server da un accesso diretto all'URL

0

C'è uno script lato server scritto in php (ad esempio backend_file.php) o coldfusion (ad esempio backend_file.cfm).

Diciamo, sto usando Apache e ho una cartella web di esempio (sul mio Localhost) come:

backend_file.php index.php È possibile limitare l'accesso a backend_file.php, quando viene colpito direttamente dal browser?

Tuttavia, index.php dovrebbe essere in grado di accedere a backend_file.php?

Nota: index.php è accessibile, tramite accesso diretto all'URL.

Ho detto che index.php dovrebbe essere in grado di accedere a backend_file.php, in quanto rende ajax il post o ottiene la richiesta di recuperare informazioni da backend_file.php?

    
posta ritesh_NITW 13.06.2014 - 20:36
fonte

3 risposte

2

Se backend_file.php sarà accessibile tramite AJAX, allora deve essere richiesto dall'utente. Se è possibile accedere solo tramite require() / include() , puoi utilizzare define() e defined() per impedire che venga caricato direttamente.

In index.php:

define('MAIN_INCLUDED', 1);

In backend_file.php:

if(!defined('MAIN_INCLUDED'))
  exit(1);
    
risposta data 14.06.2014 - 22:33
fonte
0

Se dovessi rinominare il file con un'estensione diversa che non è un'estensione comune per il web, potresti comunque leggerlo da index.php, ma puoi negare l'accesso dal web. Apache consente questa configurazione e, per impostazione predefinita, sono consentite solo le estensioni web ben note (php, php5, htm, html, ecc.), Poiché queste mappano a gestori noti (ad esempio php verrà elaborato da un processore php, ecc. ) Questi sono definiti nel file httpd.conf ed è meglio aprire il file e vedere quali estensioni sono già registrate. Potresti anche voler evitare altre estensioni comuni che potrebbero non esserci ancora, ma potrebbero venire in futuro.

Basta rinominarlo in qualcosa come backend_file.internalonly, e molto probabilmente dovrebbe risolvere il problema.

Un'altra opzione è spostare il file fuori dalla cartella public_html (o www), se possibile. Tuttavia, preferisco estensioni diverse semplicemente così posso tenere il file in una determinata cartella.

Se questo file ha dati sensibili (invece di solo un codice condiviso che non vuoi essere colpito dall'esterno), allora lo sposterei completamente fuori dalla cartella public_html, invece di provare a entrare nel controllo degli accessi soluzioni (che sono più difficili da correggere e testare.)

    
risposta data 13.06.2014 - 21:17
fonte
0
  • Gli script vengono elaborati dal motore di script dell'interpretazione (come ASP, PHP), quindi i browser ottengono l'output HTML dello script e non il codice sorgente.

  • Tuttavia, nel caso in cui il motore di scripting non sia disponibile nella tua macchina, il tuo server HTTP visualizzerà solo ciò che è nel tuo file di script, che è ciò che non vuoi.

  • Questo può essere fatto in Apache in modo simile a ciò che fai per proteggere .htaccess file. Devi solo aggiungere queste righe al tuo file config

..

<Files ~ "^.*\.([Pp][Hh][Pp])"> #PHP protection
order allow,deny
deny from all
satisfy all
</Files>
    
risposta data 14.06.2014 - 17:43
fonte

Leggi altre domande sui tag