Feliz semana, a quien pueda interesar "la historia completa", puede ver este post:
http://www.forosdelweb.com/showthrea...gura+del+mundo
Y hay este link para quienes esten interesados:
http://www.forosdelweb.com/showthrea...gura+del+mundo
Con las indicaciones recibidas allí, he "mejorado" la página/script de esta forma:
En la session se guardan unas variables de las cuales depende los accesos.
Las variables de session solo son registradas si el acceso $_POST['variable'] contiene el valor correcto
La seguridad depende 100% del valor registrado en las 2 variables de session:
"esteserdelespacio" y "lapersonaesvalida"
Finalmente lo unico que se me ocurre es COPIAR (y pegar) las cabeceras sugeridas por CLUSTER:
// No almacenar en el cache del navegador esta página.
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Expira en fecha pasada
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // Siempre página modificada
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0
##################################3
01 // Podria un hacker reescribir los archivos de session?
02 // A + variables de session utilizadas en el condicional de acceso mayor seguridad?
03 // Como puedo hacer este condicional:
if(**** la variable **** $_POST['pasword'] **** viene de la pagina hopedada en:
http://misitio.com/directoriodepagin...avalida.php*** )
{
entonces procese
}
else
{
mail("
[email protected]","Me intentan fregar","El dia tal desde $REMOTE_ADDR intentan hackearme";
header('Location:
http://www.google.com/');
exit;
}
04 // Es inapropiado:
Código PHP:
$_SESSION['ip_quepuedeutilizar_estapagina'] = $REMOTE_ADDR;
Código PHP:
(if($_SESSION['ip_quepuedeutilizar_estapagina'] != $REMOTE_ADDR... // (LA ACTUAL IP)
Es decir, en la linea 58 (que se egecuta solo una vez) agregar:
Código PHP:
$_SESSION['ip_quepuedeutilizar_estapagina'] = $REMOTE_ADDR;
y continuar validando esa variable en la linea 48 asi:
Código PHP:
if($_SESSION['esteserdelespacio'] != 'es_aceptado') OR $_SESSION['ip_quepuedeutilizar_estapagina'] != $REMOTE_ADDR
O es obtusa esa idea?.
--------------------------------------------------------
GRACIAS!.
Este es el script:
Código PHP:
<?php
//Primero creamos el nombre de la session:
session_name("paginasegura");
//(Sinceramente no se de que sirve hacerlo, si por defecto existe: PHPSESSID).
//Segundo la solicitamos
session_start();
$inicio = "<CENTER><FORM ACTION='$PHP_SELF' METHOD='POST'>Ingresa la clave: (<BR><INPUT TYPE='PASSWORD' NAME='clave'> <INPUT TYPE=SUBMIT VALUE='Ingresar'></FORM></CENTER></BODY></HTML>";
$laclavesecreta = 'fdw';
//Para evitar avisos en caso de que trabajemos con [ error_reporting=E_ALL ]
//Iniciamos las variables $clave, $intento y $accion como cadenas vacias:
if(!isset($_SESSION['esteserdelespacio']))
{
$_SESSION['esteserdelespacio'] = '';
$_SESSION['lapersonaesvalida'] = '';
echo $inicio;
exit;
}
if(!isset($accion)){$accion = '';}
if(!isset($intento)){$intento = '';}
if(!isset($_POST['clave'])) {$_POST['clave'] = '';}
/*
Aplicamos 2 funciones sobre la variable para quitarle cualesquier
caracter maligno como: $_POST['clave']='<?php include("file_x.php"); ?>'
Creo que debe hacese = con todo lo que envie el usuario
+ vale prevenir...
*/
$_POST['clave'] = trim($_POST['clave']);
$_POST['clave'] = htmlentities($_POST['clave']);
//Salimos de la session si es lo que se desea
//Y destruimos todos los datos almacenados en la session:
if("salir" === "$accion")
{
$_SESSION = array();
session_destroy();
echo $inicio;
exit;
}
if($_SESSION['esteserdelespacio'] != 'es_aceptado')
{
//Comprovamos la clave secreta:
//Si es valida, registramos la session:
if($laclavesecreta === $_POST['clave'])
{
unset($_SESSION['intento']);
$_SESSION['esteserdelespacio'] = 'es_aceptado';
//Y tambien una variable secreta que es desconocida para el usuario:
//La cual sera REQUERIDA para la validacion:
$_SESSION['lapersonaesvalida'] = 'parecequesi';
echo "Bienvenido";
//Se continuan todas las acciones
//Como por ejemplo:
echo "<A HREF='$PHP_SELF?accion=salir'>Salir</A>";
}
else
{
//Si la persona se equivoca + de 3 veces, lo + probable es que sea un hacker
//Entonces dejamos la cookie en la PC de la persona, y la sacamos de nuestro sitio web
if(isset($_SESSION['intento']))
{
if($_SESSION['intento'] > 3)
{
header("Location: [url]http://127.0.0.1[/url]");
exit;
}
}
$intento++;
$_SESSION['intento'] = $intento;
$losintentos = $_SESSION['intento'];
echo "$losintentos $inicio";
exit;
}
}
else
{
echo "Bienvenido";
//Se continuan todas las acciones
//Como por ejemplo:
echo "<A HREF='$PHP_SELF?accion=salir'>Salir</A>";
##
## O bien podriamos redirigir a la persona a otras paginas con:
## header("Location: paginas_solo_para_usuarios.php");
## exit;
## ## colocando al inicio de cada una de ellas:
## include("estapagina.php");
##
}
?>
GRACIAS NUEVAMENTE.
Si acaso a alguien le llega a servir este script, me gustaria saberlo, APENAS COMIENZO EN PHP, y seria muy estimulante
pensar que en algo a alguien le ha servido el jijuemadre.
Salu2!.