Foros del Web » Creando para Internet » HTML »

Acceso restringido a un documento

Estas en el tema de Acceso restringido a un documento en el foro de HTML en Foros del Web. Tengo un script para validar un $passdoc de acceso a un documento... el documento es el action del formulario $archivo="Documentos/0103/DEPT/PUB/PUB-0103-000.doc"; echo "<form name=\"acceso\" method =\"post\" ...
  #1 (permalink)  
Antiguo 02/12/2003, 12:09
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 21 años
Puntos: 0
Acceso restringido a un documento

Tengo un script para validar un $passdoc de acceso a un documento...

el documento es el action del formulario

$archivo="Documentos/0103/DEPT/PUB/PUB-0103-000.doc";


echo "<form name=\"acceso\" method =\"post\" action=\"$archivo\" target=\"new\" onSubmit=\"return validar(acceso)\">";
echo "<input type=\"password\" name=\"pass\" value=\"\">";
echo "<input type=\"submit\" name=\"\" value=\"Acceder\"><br>";
echo "<input type=\"hidden\" name=\"passdoc\" value=\"$passdoc\"></form>";

Con el method=\"POST\" me sale este error...
The requested method POST is not allowed for the URL /sipi/Documentos/0103/DEPT/PUB/PUB-0103-000.doc.

Si le quito el method POST me entra bien pero con el problema que se ve en la ventana el $passdoc y no me interesa.

¿Qué me está ocurriendo?

Gracias
  #2 (permalink)  
Antiguo 02/12/2003, 12:21
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
Has probado a hacer lo mismo pero a mano (sin escribirlo desde php) ??

Falta saber si es un problema de servidor o el documento que lo recibe (en cuyo caso no es problema html ni php) o si es problema de la sintaxis php que haga algo raro o qué.

mejor deja aquí el código resultante de ejecutar ese php. Entonces será más facil ver si hay algún problema en el html
  #3 (permalink)  
Antiguo 02/12/2003, 14:26
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 21 años
Puntos: 0
Gracias por tu rápida respuesta...
No se a qué te refieres con ejecutarlo a mano

Yo lo que hago es tomar la ruta del archivo que es

$archivo="Documentos/0103/DEPT/PUB/PUB-0103-000.doc";
y el $passdoc que corresponde al archivo del registro de la base de datos.
Despues valido el valor del form acceso con la funcion validar(acceso) en java y listo para enviar.

?>

<html>
<head>
<script Language="JavaScript">
<!--
function validar(acceso){
if (acceso.pass.value !=acceso.pass.value){
alert("!!!Password incorrecto!!!");
acceso.pass.focus();
return (false);
}
return (true);
}
//-->
</script>
</head>
</html>

<?php

echo "<form name=\"acceso\" method =\"post\" action=\"$archivo\" target=\"new\" onSubmit=\"return validar(acceso)\">";
echo "<input type=\"password\" name=\"pass\" value=\"\">";
echo "<input type=\"submit\" name=\"\" value=\"Acceder\"><br>";
echo "<input type=\"hidden\" name=\"passdoc\" value=\"$passdoc\"></form>";

?>

Lo curioso es que sin el POST entra perfectamente pero claro tengo el problema que paso el $passdoc a la ventana de direcciones y eso no me interesa para nada.
Creo que lo que hay que buscar es sustituir el submit por algo que no envie los inputs sólo la action pero...
El resultado es:The requested method POST is not allowed for the URL /sipi/Documentos/0103/DEPT/PUB/PUB-0103-000.doc.
  #4 (permalink)  
Antiguo 02/12/2003, 14:28
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 21 años
Puntos: 0
Se me olvidó decirte que estoy trabajando en localhost (sipi). con una adptación Nuke y Apache
Gracias
  #5 (permalink)  
Antiguo 02/12/2003, 14:32
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
Lo que pasa es que el código que pones es el que va a generar el html. Hay que ver una vez ejecutado por el servidor qué es lo que devuelve para ver si el problema está en que el html que se escribe desde php tiene algún problema o qué.

Digamos que me muestras la tortilla antes de cocinarla, con lo que lo único que veo son los huevos batidos y crudos

Ejecuta ese php desde el navegador, pídele ver el código fuente y ese es el código que necesito ver
  #6 (permalink)  
Antiguo 02/12/2003, 14:46
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 21 años
Puntos: 0
Espero que sea esto lo que me pides...es el código de la ventana que aparece al linkear el documento en un script anterior para pedir el passdoc.
Perdona a mi tampoco me gustan los huevos crudos


<LINK REL="StyleSheet" HREF="themes/Sipi/style/style.css" TYPE="text/css">


<body bgcolor="#f8daa4" text="#000000" link="0000ff"><center><img src="images\logos\sipi.gif">
<html>
<head>
<script Language="JavaScript">
<!--
function validar(acceso){
if (acceso.pass.value !="paso"){
alert("!!!Password incorrecto!!!");
acceso.pass.focus();
return (false);
}
return (true);
}
//-->
</script>
</head>
</html>

<center><font class="tiny"><b>!!! Documento con acceso restringido !!!</b><br>Introduzca su password<br><form name="acceso" method="POST" action="Documentos/0103/DEPT/FOR/boli.jpg" target="new" onSubmit="return validar(acceso)"><input type="password" name="pass" value=""><input type="submit" name="" value="Acceder"><br><font class="tiny">Responsable del documento:<br>
Ricardo Saralegui Gil<br>IMASA,DIR. DESARROLLO<br></font><A HREF="mailto:[email protected]"><font class="tiny"><b>[email protected]</b></font></form><center><font class="tiny">[<A HREF="<a href="javascript:void(0)" onClick=javascript:self.close()>Salir</a>]</font></center>
  #7 (permalink)  
Antiguo 02/12/2003, 14:52
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
aaah!! eso era lo que quería ver

fale, pues ahí está el problema, fíjate que la action que te genera no se parece en nada a la que esperas



Cita:
<center><font class="tiny"><b>!!! Documento con acceso restringido !!!</b><br>Introduzca su password<br><form name="acceso" method="POST" action="Documentos/0103/DEPT/FOR/boli.jpg" target="new" onSubmit="return validar(acceso)"><input type="password" name="pass" value=""><input type="submit" name="" value="Acceder"><br><font class="tiny">Responsable del documento:<br>
Ricardo Saralegui Gil<br>IMASA,DIR. DESARROLLO<br></font><A HREF="mailto:[email protected]"><font class="tiny"><b>[email protected]</b></font></form><center><font class="tiny">[<A HREF="<a href="javascript:void(0)" onClick=javascript:self.close()>Salir</a>]</font></center>
¿lo ves? el formulario está siendo enviado a un archivo jpg de nombre boli. Y claro... no puede ser.

Así el problema debe estar en lo que recoge la variable $archivo

p.d. lo de los huevos y eso era nomás una alegoría eh
  #8 (permalink)  
Antiguo 02/12/2003, 15:00
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 21 años
Puntos: 0
No amiga tunait..je je no es tan simple como el batir los huevos...

Lo que ocurre es que ahora estoy en mi casa (no en la ofi) y claro para tu prueba cargué un documento (una pequeña foto) que se llama boli.jpg en vez de PUB-0103-000.doc.
El problema persite de la misma manera.
  #9 (permalink)  
Antiguo 02/12/2003, 15:05
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
me cachis... yo que creí que había cazado el fallo.... claro, me muetras primero los huevos batidos y luego me muestras un filete de pescado yá hecho y claro, me confundo

usando get funciona? no me refiero a si te da o no error, quiero decir si hace lo que tiene que hacer ese doc.

Es que nunca he visto que un .doc gestione un formulario ¿es un .doc con visual basic?
  #10 (permalink)  
Antiguo 02/12/2003, 15:27
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 21 años
Puntos: 0
Sí con el get funciona pergectamente pero como te dije el get lo malo que tiene es que pasa las variables, en este caso la clave, al navegador , en este caso donde se ve el documento y claro se pierde toda la seguridad.
Está claro que lo que puedo hacer es encriptar las variables para que el usuario ve sólo una buena cadena de números pero no me parece una solución elegante.

El sistema es para una aplicación de gestión de proyectos y documentos con todo tipo de formatos. El ejemplo de la ofi era un simple documento de word.
Yo la verdad es que ando un poco mosqueado pues no me había encontrado con este problema antes. ¡Caramba! es un simple POST!.
Me picó la curiosidad y me metí un momentito en tu página. En principio me encantó su enfoque. Te prometo que la veré un poco más detenidamente.
  #11 (permalink)  
Antiguo 02/12/2003, 15:40
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
Yá me parecía un poco extraño usar un .doc por action, pero a saber, igual y se puede y yo no lo sabía (como cada día me entero de cosas nuevas....)

Sabes, ese mensaje de error que te dá yo sólo lo he encontrado cuando he tratado de enviar un formulario por método post a un documento incapaz de gestionar formularios (por ejemplo, un html).

El html generado por el php en el servidor (una vez cocinados los huevos) yo lo veo correcto, creo que debe de ser más un problema con el documento que lo recibe.

No habrías de tener problemas usando post si el documento receptor está correcto. No creo que sea cuestión de que te dés la faena de encriptar la contraseña para enviarlo por url.

Cuéntame el desarrollo del tema ok?

p.d. Me alegra que te haya gustado el enfoque de mi paginilla, la verdad que era una pena tanto código desaprovechado y creo que ahí cumple una función más util
  #12 (permalink)  
Antiguo 03/12/2003, 06:24
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 21 años
Puntos: 0
Tunait,
Definitivamente el servidor no tiene disponible el POST para abrir documentos por lo que la única solución es abrirlo con un GET y claro este pasa los valores de los inputs.

Lo único que se me ocurrió es dale al input del pass un name muy largo para llenar la barra de direcciones.
Se supone que el usuario si puede acceder a la barra de direcciones es que metió el pass adecuado (ya lo conoce) así que lo único que protegemos es que no lo vea alguien que, por ejemplo, esté a su lado tomando un café.
Lo que me he dado cuenta es que el name no admite otros caracteres que no sean letras pues si así fuera aún lo complicaríamos más poniendo de name="???????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????????????????????????????????????????????? ?????????" por ejemplo.
Bueno ya sabes que tenemos una investigación pendiente y es ¿por qué el documento no toma el POST y cómo hacemos para ocultar las variables al lanzar un get?.
Me da la espina que te gusta enredarte así que ahí la tienes. Estaremos en contacto.
  #13 (permalink)  
Antiguo 03/12/2003, 06:58
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 21 años
Puntos: 0
Vaya ahora me doy cuenta que en el código de la ventanida de acceso se puede pillar perfectamente el passdoc del documento en el <input type="hidden" name ="passdoc" value="$passdoc"> y eso sí es grave...así que necesito forzósamente encriptar el $passdoc.
Ahora lo que necesito es ecriptar tambien el input Type="password" para despues poder compararlos.
He hecho la pregunta en el foro de Java pero te la mando a ti tambien a ver si me puedes ayudar.

Ya sabes..

Tengo un FORM name="acceso" con dos input en un form

<input type="password" name "pass" value="">

<input type="hidden" name="pass" value ="$passdoc">

el $passdoc está cifrado con MD5 y necesito poder compararlo con pass

he hecho

if (MD5(acceso.pass.value) !=acceso.passdoc.value){
.....
pero no me funciona.
¿Cómo calculo el MD5 de pass?
  #14 (permalink)  
Antiguo 06/12/2003, 05:14
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
La verdad es que nunca he usado encriptación así que no puedo ayudarte.

De todas formas... ¿has pensado en guardar entonces ese pass en una cookie de sesión única en vez de pasarla por la url??
  #15 (permalink)  
Antiguo 06/12/2003, 17:32
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 21 años
Puntos: 0
Ya lo tengo listo. Te lo enviaré pero ahora mismo mno puedo.
Te prometo enviartelo mañana.
No de guardarlo como sesión no es práctico para mi caso:
Recuerda que no son password de usuarios sino de documentos;es decir, cada documento puede tener un password dioferentes y pueden ser milles.
La idea es particularizar el acceso de los documentos de cada una de las divisiones de empresa y yo manejo 36 divisiones de 23 empresas que componen el grupo que dirijo.
Hasta mañana.
Saludos
  #16 (permalink)  
Antiguo 07/12/2003, 14:55
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 21 años
Puntos: 0
Bueno Tunait para cerrar el tema te envío la función que se abre en una ventanita al likear un "Documento" de una lista de consulta de documentos.
Los documentos están en registros de una base de datos sql con su passdoc correspondiente.

////////////////////////////////////////////////////////////////////
function accdoc($bd,$archivo,$submitter,$passdoc) {
Global $module_name,$index,$dbi,$user,$cookie,$prefix,$us ername,$admin,$archivo_size,$bgcolor3,$bgcolor2,$b d,$empinfo,$subminfo,$docinfo,$proyinfo; //me traigo las variables que necesito

echo "<body bgcolor=\"#f8daa4\" text=\"#000000\" link=\"0000ff\">";

getsubminfo($submitter);//tomo información del que metió el documento en el sistema y le puso el passdoc

echo "<center><img src=\"images\logos\sipi.gif\">";
if ($archivo){

if ($passdoc==""){//solo para usuarios de la división

echo "<font class=\"title\"><b>!!!Acceso restringido a usuarios de $subminfo[user_intrest],$subminfo[user_from]!!!</b></font><br>
<font class=\"tiny\">Solicite información a<br>
$subminfo[name]<br>$subminfo[user_intrest],$subminfo[user_from]<br></font><A HREF=\"mailto:$subminfo[email]\"><font class=\"tiny\"><b>$subminfo[email]</b></font></a>";

}else{//Sie existe comprueba el passdoc

$passdoc=strtoupper(MD5($passdoc));//encripto el passdoc de la BD

?>
<html><head><title></title>
<script language="JavaScript" src="md5.js"></script>//scrip de javascript para el cálculo de md5( no adjunto pero se encuentra por ahí)

<script language="JavaScript">
numero="" //yo no uso nuemro para la encriptacion
function calculaMD5() {
var pw = document.forms["login"].elements["pass"].value
pw += numero
return calcMD5(pw)
}

function enviaMD5(hash) {
document.forms["login"].elements["passcifrado"].value = hash;
if (document.forms["login"].elements["passcifrado"].value !=login.passdoc.value){
alert("!!!Password incorrecto!!!");
login.pass.focus();
return (false);
}
return (true);

}
</script>
</head>
<?php

echo "<center><font class=\"tiny\"><b>!!! Documento con acceso restringido !!!</b><br>Introduzca su password<br>";
echo"<form action=\"$archivo\" method=\"GET\" target=\"new\" name=\"login\">
<input type=\"Hidden\" name=\"entrar\" value=\"¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿\">
<input type=\"Hidden\" name=\"passcifrado\" value=\"\">
<input type=\"Hidden\" name=\"passdoc\" value=\"$passdoc\">
Password: <input type=\"Password\" name=\"pass\"><br>
<input type=\"Submit\" value=\"Login\" onClick=\"return enviaMD5(calculaMD5())\"></form>";
echo "<font class=\"tiny\">Responsable del documento:<br>
$subminfo[name]<br>$subminfo[user_intrest],$subminfo[user_from]<br></font><A HREF=\"mailto:$subminfo[email]\"><font class=\"tiny\"><b>$subminfo[email]</b></font>";

}
}else{
echo "<center><font class=\"tiny\"><b>!!! Documento no existente !!!</b><br>";
echo "<font class=\"tiny\">Solicite la información a:<br>
$subminfo[name]<br>$subminfo[user_intrest],$subminfo[user_from]<br></font><A HREF=\"mailto:$subminfo[email]\"><font class=\"tiny\"><b>$subminfo[email]</b></font></center><br>";

}
echo "<center><font class=\"tiny\">[<A HREF=\"<a href=\"javascript:void(0)\" onClick=javascript:self.close()>Salir</a>]</font></center>";

}
/////////////////////////////
Eso es todo. Sigo con el problema de no poder sustituir el GET con un POST que sería mejor.
Aunque se supone que quien puede acceder al documento conoce
el passdoc es preferible ocultarlo de la vista de quienes pueden estar "pillando" al lado. Para eso he puesto ese nombre tan raro de name (p'a despistar un poco).
Gracias por tu atención Tunait. Realmente pienso que en el foro estais personas dispuestas aunque es de mi criterio que tambien hay demasiada tontería que no ayuda para nada.
Sería bueno que este tipo de script se le dieran un buen tratamiento para que sean de buen provecho para quienes realmente lo necesiten.
Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:43.