Recolección de medidas de seguridad para php
Tener register_globals en Off.
Esto nos obliga a leer las variables desde $_GET, $_POST, o $_REQUEST y hacer el programa más seguro.
htmlentities($variable)
Nos eliminara etiquetas html.
Revisar las estadísticas para ver si hay algún movimiento "raro" de algún fichero.
Los errores 440 y demás personalizarlos y enviar un correo o registrar la url para comprobar. (Jesús Valverde)
Añadir intval() a las consultas al pasar un identificador, por ejemplo para ir de un listado a una ficha bien sea por GET o por POST:
//
<a href="fichaproducto.php?id=7">Producto 7</a>
y en ficha...
if(intval($_GET["id"] > 0) {
// Sigo y muestro ficha, he recibido como identificador un número entero
}
else {
// redirijo a la principal
header("Location:http://www.dominio.com");
}
//
con esto nos evitamos encontrarnos conn texto en unna consulta que no lo neccesita, osea:
$id = "1; SELECT * FROM Usuarios;";
Fallaria, así como cualquier otra cadena que nos quisieran colar
Configurar php.ini para que no se pudiera ejecutar comandos del sistema.
Hola, yo hace un tiempo tuve que migrar una pagina hecha en v.4 a v.5, por ende tuve bastantes problemas como los descritos por ti, un tema importante es inicializar todas las variables, lo que hice fue en un archivo funciones.inc.php generar estas funciones, que descargue no recuerdo donde:
<?php
function checkpost($campo, $msg, $tipo=""){
if (isset($_POST[$campo])){
if ($tipo == "num") {
if (is_numeric($_POST[$campo])) {
return trim($_POST[$campo]);
}else{
return 0;
}
} elseif ($tipo == "array"){
return $_POST[$campo];
} else {
return trim($_POST[$campo]);
}
}else{
return $msg;
}
}
function checkget($campo, $msg, $tipo=""){
if (isset($_GET[$campo])){
if ($tipo == "num") {
if (is_numeric($_GET[$campo])) {
return trim($_GET[$campo]);
}else{
return 0;
}
}
return trim($_GET[$campo]);
}else{
return $msg;
}
}
?>
luego en la todas las pagina donde recibo parametros ya sea por post o get coloco lo siguiente.
procesa.php:
include_once("../includes/funciones.inc.php");
$var1=checkpost("var1","");
$var2=checkpost("var2","");
$var3=checkget("var3","");
$var4=0;
....