Mi pregunta es más sobre la práctica del diseño, pero ¿dónde debería comenzar el filtrado? Pensé que la clase sería el mejor lugar para ello, pero ¿no pondría eso al objeto instanciado ($ objReg) en riesgo de inyección de código usando variables POST sin filtrar de esa manera?
¿Cómo puedo solucionar este problema? ¿Hay un mejor diseño para esto?
Index.php es el controlador para todas las llamadas. Así, por ejemplo, llamará a register.php la función register2 () (es decir, index.php? Action = register2), y la función a su vez crea una instancia del objeto como se ve a continuación.
¿Crees que esto es seguro? Intento seguir los principios DRY y OOD para evitar confusiones.
código principal @ register.php (incluye ommited):
function register2(){
$objReg = new registration($_POST['username'],$_POST['password'],$_POST['email']);
$objReg->register();
unset($objReg);
}
limpia clase @ seguridad.php:
class clean
{
public function process($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
}
registration class @ register.class (método de registro omitido):
class registration
{
// Registration stuffs
private $regUser = NULL;
private $regPass = NULL;
private $regEmail = NULL;
public function __construct($regName, $regPass, $regEmail)
{
//Set the class properties if they aren't NULL.
if (!empty($regName) AND !empty($regPass) AND !empty($regEmail)){
$objClean = new clean;
$this->regUser = $objClean->process($regName);
$this->regPass = $objClean->process($regPass);
$this->regEmail = $objClean->process($regEmail);
unset($objClean);
}
}
}