domanda su htmlspecialchars

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
ciao
una curiosità. ho trovato su di un manualetto il seg codice

HTML:
<form method="post" action" <?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>.........

volevo sapere
htmlspecialchars() è necessario oppure è una finezza di cui si può fare tranquillamente a meno?
 
no, non è una semplice finezza più che altro si tratta di un possibile metodo per rendere più sicuro l'invio di dati evitando la presenza di caratteri speciali (anche l'action è un parametro di input).
Recentemente ho letto un articolo sulle vulnerabilità dei temi per WorPress risolvibili con questo semplice accorgimento.
 
ciao
intanto grazie
ma un piccolo dubbio
nel form scritto in html inserito in una pag. php che rimanda a se stessa (chiamata ad es mia_pag.php) posso scrivere:

..action="mia_pag.php"...

oppure utilizzando $_SERVER

..action="<?php $_SERVER['PHP_SELF'];?>"...

il risultato non cambia, oppure si? $_SERVER['PHP_SELF'] non restutuisce il nome del file in cui mi trovo?
 
Il risultato non cambia se scrivi la stringa in modo corretto::)

PHP:
..action="<?php echo $_SERVER['PHP_SELF'];?>"

e non

PHP:
..action="<?php $_SERVER['PHP_SELF'];?>"
 
hai ragione, mi sono dimenticato un
echo..echo....echo......echo.......ec....

e quindi se il discorso non cambia a che mi serve htmlspecialchars()?
 
per eliminare eventuali caratteri speciali che dovesso essere aggiunti alla querystring della pagina.
 
ciao
che serva ad eliminare i caratteri speciali non ci piove, quello che non capisco è come è possibile che vi siano nell'action dei caratteri speciali, l'action non è (almeno cosi a naso mi sembra) un input gestibile dall'utente (oppure si?).
mi spiego se ho nel form una casella di <input name="pinco"... mi sembra giusto quando raccolgo
$pinco=htmlspecialchars($_POST['pinco']);
in quanto l'utente in pinco può inserire una qualche parte di querystringa, o js, con danni per es al db
oppure l'utente può richiamare la pag del form
http:// www. mio_sito/ mia_pag.php ?distriggi=distruggi_data_base e
$_SERVER[] cattura la qurystr?
in tal caso allora non è meglio scrivere action="mia_pag.php" ?

p.s.
le mie sono osservazioni filosofiche in quanto aggiungere htmlspecial non è certo una fatica (o scrivere il nome della pag), cerco solo di capire meglio
 
$_SERVER['PHP_SELF'] permette di utilizzare una action indipendentemente dal nome della pagina, "mia_pagina.php" è invece vincolante.
Per questo il controllo con htmlspecialchars() può essere utile per evitare che si valorizzi $_SERVER['PHP_SELF'] con una querystring arbitraria magari contenente caratteri speciali.
 

Discussioni simili