¿Es seguro usar cast (int) en lugar de escapar?
class opinion
{
function loadbyopinionid($opinionid){
$opinionid=(int)$opinionid;
mysql_query("select * from fe_opinion where opinionid=$opinionid");
//more code
}
}
¿Es seguro usar cast (int) en lugar de escapar?
class opinion
{
function loadbyopinionid($opinionid){
$opinionid=(int)$opinionid;
mysql_query("select * from fe_opinion where opinionid=$opinionid");
//more code
}
}
mysql_real_scape_string es para CUERDAS. no hará un número "seguro" para su uso. p.ej.
$safe = mysql_real_escape_string($_GET['page']);
no hará nada en
$_GET['page'] = "0 = 0";
porque no hay meta-caracteres en SQL allí. la consulta terminaría algo así como
SELECT ... WHERE somefield = 0 = 0
Sin embargo, hacer intval(), convierten dicho 0=0
en una llanura 0
.
Exactamente.' (int) $ value' es seguro, pero hay que tener en cuenta que hay efectos secundarios como '(int)" 5abc "=== 5'. Entonces uno debe validar, que la cadena dada es * solo * un número, por ejemplo usando 'ctype_digit()'. – apfelbox
No estaría de acuerdo ... porque alguien puede pasar cadena donde se esperaba un número entero ... es mucho más seguro usarlo con todos los parámetros. –
Sí que es seguro, pero debe escapar el valor de la consulta ..where opinionid = '$ opinionid'"
Por cierto (1) Nunca utilice Select * Solución Seleccionar campo, Campo2 .. ..
(2) (int) $ foo es menos perfomanter continuación intval ($ foo)
Como recuerdo, intval() es más lento que (int) (micro-mejora que generalmente no vale la pena el esfuerzo, ya que la diferencia es invisible para el ojo). –
debe utilizar parámetros. – SLaks
Puesto que usted está aparentemente no usando como cadena dentro de contexto de SQL, escapando con '_escape_string 'no sería útil. – mario