Ciao ragazzi scusatemi sto cercando di capire una cosa:
io ho un form da cui invio tramite "POST" una textbox ed una textarea quindi poi dato che devo eseguire una query di INSERT volevo fare dei controlli di sicurezza oltre che farli passare per delle funzioni che mi servono per manipolare il testo.
A questo punto ho utilizzato htmlentities e addslashes ma non riesco a capire se il modo in cui le ho utilizzate è corretto o no e soprattutto se in questo modo riesco ad evitare sql / form injection
ecco il codice:
Codice PHP:
$titolo = $_POST['titolo'];
$textArea = $_POST['textArea'];
$titolo = htmlentities($titolo);
$titolo = addslashes($titolo);
$textArea = urldecode($textArea); // decodifico ciò che mi è arrivato
$textArea = spaziaturaTag($textArea); // eseguo la spaziatura dei tre caratteri "<>
$textArea = htmlentities($textArea); // trasformo tutto in entità html
$textArea = testo_in_url($textArea); // rilevo delle url nel testo e le trasformo in cliccabili
$textArea = nl2p($textArea); // metto il testo tra tag
</p>
$textArea = eliminaTagVuoti($textArea); // elimino tutti i tag che sono rimasti vuoti
$textArea = addslashes($textArea); // aggiungo gli slash per evitare problemi
// query di INSERT<-----
# funzione che trasforma il testo in url cliccabili
function testo_in_url($stringa){
// conversione tramite sostituzione con espressioni regolari
return preg_replace("~(http|https)://(.*?)(\s|\n|[,.?!](\s|\n)|$)~", "<a href=\"$1://$2\" rel=\"nofollow\">$1://$2</a>$3", $stringa);
}
# funzione che trasforma i ritorni a capo con tag
</p>
function nl2p($text) {
return "
" . str_replace("\n", "</p>
", $text) . "</p>";
}
# funzione che elimina i tag vuoti
function eliminaTagVuoti($html)
{
$pattern = "/<[^\/>]*>([\s]?)*<\/[^>]*>/";
return preg_replace($pattern, '', $html);
}
function spaziaturaTag($testo)
{
return preg_replace('#([<>"])#', ' $1 ',$testo);
}