htaccess - protegge l'esecuzione del file php in una directory specifica

1

Come posso proteggere l'esecuzione di php in una specifica directory di upload?
Per lo più, le persone inseriscono .htaccess nella cartella di upload per proteggere l'esecuzione di php. Ma qualcuno dice che può essere sostituito dagli aggressori.
Quindi, come posso controllarlo dalla radice .htaccess?
Ho provato a inserire i seguenti codici nella radice .htaccess ma mostra "500 internal sever error" e il mio sito web va giù.

<Directory ^public_html/product/uploads>
<Files ^(*.php|*.phps)>
    order deny,allow
    deny from all
</Files>
</Directory>

Grazie in anticipo

    
posta ronaldtgi 29.01.2015 - 10:18
fonte

3 risposte

0

Hai provato a utilizzare " 's?

<Directory "^public_html/product/uploads">
<Files "^(*.php|*.phps)">
    order deny,allow
    deny from all
</Files>
</Directory>

Questo impedirebbe agli utenti di accedere ai file PHP. In alternativa, è possibile disabilitare il motore PHP per questa directory, consentire la lettura dei file. Controlla la domanda correlata Disattiva PHP nella directory (inclusi tutti sottodirectory) con .htaccess

    
risposta data 29.01.2015 - 11:06
fonte
0

La risposta di @ Dog-eat-cat-world è un buon inizio, ma dovresti evitare di usare .htaccess tutti insieme.

Si tratta di un enorme killer per le prestazioni e quando si utilizza qualcosa di diverso da Apache Httpd potrebbe non essere nemmeno usato (come nginx).

È meglio (e più pulito) inserire questo tipo di restrizioni all'interno del tuo file di configurazione host (virtuale). Anche ad esempio Drupal consiglia qui fare:

  • disattiva le opzioni non necessarie
  • Sostituisci il gestore php con qualcosa di inesistente.
  • Eventualmente disabilitare completamente il motore php.

Directly from ./sites/default/files/.htacces inside a working drupal 7 setup.


# Turn off all options we don't need.

Options None

Options +FollowSymLinks

# Set the catch-all handler to prevent scripts from being executed.

SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006

# Override the handler again if we're run later in the evaluation list.

SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003

# If we know how to do it safely, disable the PHP engine entirely.

php_flag engine off.


    
risposta data 29.01.2015 - 12:12
fonte
0

Tutte le altre risposte sono buone. Sono d'accordo con Lawri, dovresti inserire la limitazione nella tua sezione VirtualHost della tua configurazione di Apache e non usare i file .htaccess poiché causano dei colpi di performance, rende difficile il debug e può essere usato per bypassare entrambe le soluzioni proposte. Quindi dovrai aggiungere AllowOverride None anche alla tua configurazione di Apache. In caso contrario, un utente malintenzionato potrebbe caricare un webshell autonomo di htaccess .

    
risposta data 10.02.2015 - 22:50
fonte

Leggi altre domande sui tag