Il codice PHP dannoso può essere eseguito nella cache. Soluzione?

0

Ho un modulo che metto in cache alcuni dettagli (w / c è dall'input dell'utente) per ridurre il carico del mio database

Il modo in cui memorizzo la cache creando la pagina html con i dettagli dell'utente utilizzando fwrite();

il problema è dopo che provo il modulo dell'utente, se inserisco questo

<?php 
 echo "this is from the input of the user";
?>

all'interno della textarea. Dopodiché questi dettagli andranno in cache, e poi quando caricherò il file cache è stato eseguito il codice php.

L'unica soluzione che ho è di strreplace() questo carattere <? dal loro input. C'è qualche soluzione?

    
posta Efaz AÑecoh J-ra 07.11.2012 - 15:43
fonte

1 risposta

5

La soluzione è non memorizzare la cache in questo modo. Per iniziare, <? è solo uno dei vari modi per iniettare PHP, inclusi <script language="PHP"> e <?php . Le blacklist sono sempre una cattiva idea.

Il tuo sistema di caching non funziona in primo luogo in termini di prestazioni perché, quando la tua offerta di PHP diventa un problema di prestazioni, anche le prestazioni del tuo disco diventano un problema. A quel punto non migliorerai affatto le prestazioni.

Per una corretta memorizzazione nella cache, si desidera l'archiviazione in memoria. Dai un'occhiata a memcached (e il Modulo PHP ), APC , o una soluzione NoSQL in memoria come Redis . Questi sono progetti maturi che sono stati progettati per fare esattamente quello che stai cercando di fare.

    
risposta data 07.11.2012 - 15:52
fonte

Leggi altre domande sui tag