si fa con post e get

, ma si fa correttamente.
get e post sono due metodi per spedire, spedire si può spedire qualsiasi cosa e chiunque può spedirti qualsiasi cosa e qui non puoi fare nulla.
L'unico momento del processo in cui puoi intervenire è la ricezione, proprio come quando ricevi la posta devi farti 2 domande:
- chi me la manda
- che cos'è
Siccome non puoi saperlo fin quando non lo processi e quando lo processi parte l'esploit allora bisogna far qualcosa prima, dirgli che cosa ti aspetti e il resto non processarlo.
Se spedico un id so che è un numero e magari posso anche affermare che è lungo max 9 cifre, inoltre so che lo spedisce la mia appz e la riceve la mia appz
Saranno le cose che controllerò con una condizione al ricevimento:
if( is_numeric($_POST['id']) ) --> fai qualcosa solo se sei un numero
o anche
$pippo = (int)$_POST['id']; non condizionale ma forzo a integer altrimenti == false
in questo modo non passa altro che numeri, anche se non è proprio filtratissimo è già un livello di sicurezza buono.
Poi c'è il secondo problema: da dove arriva?
Si perchè potrei costruire un form sul mio spazio e martellarti di richieste finchè non passo o trovo qualcosa da sfruttare.
Anche qui non c'è nulla che porti un indirizzo, il server è ignorante, non lega a se la richiesta in nessun modo e in nessun modo può sapere se tu sei lo stesso della richiesta precedente...
allora si ricorre al cosiddetto token, ovvero spedisco insieme al form un codice da me generato che controllero se corrisponde al ricevimento.
Eeee... dopo tutta questa pappardella Joomla ti mette a disposizione semplicissimi metodi per fare ciò che stavi facendo... ma devi restare nell'MVC.
http://docs.joomla.org/Retrieving_data_from_GET_and_POST_requestsM.