Exactamente como esto (para el conductor de MySQL):
- Tries
mysql_real_escape_string()
(este será el caso del 99% de las veces)
- cae de nuevo a
mysql_escape_string()
- cae de nuevo a
addslashes()
- escapa manualmente
%
y _
en LIKE
de condiciones a través str_replace()
https://github.com/EllisLab/CodeIgniter/blob/develop/system/database/drivers/mysql/mysql_driver.php#L294
/**
* Escape String
*
* @access public
* @param string
* @param bool whether or not the string will be used in a LIKE condition
* @return string
*/
function escape_str($str, $like = FALSE)
{
if (is_array($str))
{
foreach ($str as $key => $val)
{
$str[$key] = $this->escape_str($val, $like);
}
return $str;
}
if (function_exists('mysql_real_escape_string') AND is_resource($this->conn_id))
{
$str = mysql_real_escape_string($str, $this->conn_id);
}
elseif (function_exists('mysql_escape_string'))
{
$str = mysql_escape_string($str);
}
else
{
$str = addslashes($str);
}
// escape LIKE condition wildcards
if ($like === TRUE)
{
$str = str_replace(array('%', '_'), array('\\%', '\\_'), $str);
}
return $str;
}
Nota que esto es simplemente escapando personajes tan consultas MySQL no se romperán o hacer algo inesperado, y sólo se utiliza en el contexto de una base de datos consulta para garantizar la sintaxis correcta en función de lo que le pase.
No hay magia que hace que todos los datos seguros para cualquier contexto (como HTML, CSV o XML de salida), y sólo en caso de que estabas pensando en esto: xss_clean()
no es una talla única para todos solución ni es 100% a prueba de balas, a veces es bastante inapropiado. La clase Active Record hace que la consulta se escape automáticamente, pero para todo lo demás debería escaparse/desinfectar datos manualmente de la manera correcta para el contexto dado, con su salida, no su entrada.
¿Has considerado mirar el código de CI? – Beat
Mucha información: http://www.google.com.ng/search?gcx=c&sourceid=chrome&ie=UTF-8&q=codeigniter+sanitize+inputs%3F – Mob
PDO ¿Alguien? http://www.php.net/pdo –