Foros del Web » Programando para Internet » PHP »

Cdigo de seguridad en formulario registro!

Estas en el tema de Cdigo de seguridad en formulario registro! en el foro de PHP en Foros del Web. Que tal amigos, me podran decir como es que construyo y como funciona ese cdigo de seguridad que se est utilizando mucho en la actualidad ...
  #1 (permalink)  
Antiguo 07/10/2004, 13:14
 
Fecha de Ingreso: septiembre-2002
Ubicacin: Mxico
Mensajes: 356
Antigedad: 15 aos, 3 meses
Puntos: 0
Cdigo de seguridad en formulario registro!

Que tal amigos, me podran decir como es que construyo y como funciona ese cdigo de seguridad que se est utilizando mucho en la actualidad en los formularios de registro con la finalidad de evitar altas automticas?

No se si ya exista una clase de ese estilo, porque practicamente lo quiero igualito al que esta en miaaroba.. http://miarroba.com/usuarios/nuevo.php
  #2 (permalink)  
Antiguo 07/10/2004, 14:07
 
Fecha de Ingreso: septiembre-2004
Ubicacin: Puebla, Mxico
Mensajes: 81
Antigedad: 13 aos, 2 meses
Puntos: 0
Creo que aqui hay un tutorial de lo que buscas: http://www.devshed.com/c/a/PHP/Security-Images-in-PHP/

Y aqui un script que te hace eso:
http://www.rushtheweb.com/products.php?cmd=FormProtect

espero que te sirva, saludos
__________________
Revista DdS
Revista on-line sobre desarrollo de software
  #3 (permalink)  
Antiguo 07/10/2004, 14:27
 
Fecha de Ingreso: septiembre-2002
Ubicacin: Mxico
Mensajes: 356
Antigedad: 15 aos, 3 meses
Puntos: 0
Gracias amigo, en verdad te agradezco la ruteada, voy a checar los links!!

Saludos!
  #4 (permalink)  
Antiguo 07/10/2004, 16:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
En las FAQ's de este foro (de las ltimas, a fecha de hoy) tienes otro ejemplo.

Un saludo,
  #5 (permalink)  
Antiguo 08/10/2004, 11:13
 
Fecha de Ingreso: septiembre-2002
Ubicacin: Mxico
Mensajes: 356
Antigedad: 15 aos, 3 meses
Puntos: 0
Que es lo que pas si no veo el cdigo!?

Que tal, pues he estado haciendo algunas pruebas, he bajado algunas clases y con todas me ha sucedido lo mismo, me despliega el formulario de prueba, pero la imgen con el cdigo de seguridad no es mostrada, solo me aparece el vnculo de la imgen rota, es decir, el espacio de la imgen con un tache.

Viendo en mi info.php revise que mi versin soporta la librera para imgenes GD, y el path hacia los includes siempre es correcto.

Que puede ser?

Saludos!
  #6 (permalink)  
Antiguo 08/10/2004, 11:35
 
Fecha de Ingreso: septiembre-2002
Ubicacin: Mxico
Mensajes: 356
Antigedad: 15 aos, 3 meses
Puntos: 0
Bueno, estoy algo preocupado, resulta que sigo bajando y probando clases, pero la imgen de seguridad sigue sin generarse, es decir que me estoy preguntando si en realidad mi php esta configurado de manera correcta para permitirme usar GD y generar imagenes a partir de esto.

Entre a la pagina de GD y quise bajar la librera para instalarla, pero justo antes me dijo que si yo posea un PHP 4.3 o mayor, mi PHP ya vena por defecto con esta caracterstica, y resulta que yo tengo un 4.3.4 y segn yo veo si esta habilitada la librera...

--with-gd' '--enable-gd-native-ttf' '--without-gdbm'

Podra alguien decirme si estoy en lo correcto o no?

http://www.chkt.com.mx/info.php

Saludos y gracias!
  #7 (permalink)  
Antiguo 08/10/2004, 11:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
Lo mejor es que salga de dudas probando un ejemplo simple que uses GD .. En tu caso tu phpinfo() dice que las tienes instaladas ... y adems que usas la versin 2.x de GD lo cual no te tendra que dar problemas en ningn caso. Si quieres probar algo ms simple de GD: www.php.net/gd .. ah tienes ejemplos en todas las funciones relacionadas con GD.

Ahora, .. puedes tener problemas de otro tipo .. problemas con rutas u otros detalles que NO vers si siempre llamas a tus scripts que generan ese cdigo por un tag de imagen <img src="generacodigo.php"> que es lo que se suele usar .. Para evaluar el problema debes llamar a ese "generacodigo.php" que genera tu imagen va GD de forma directa por el URL: http://www.tal.tal/generacodigo.php o similar y a ser posible quitar/comentar la lnea que hace referencia a header() del mismo para que veas completamente los errores que obtengas. En funcin de ese error se podr ver que pasa.

Un saludo,
  #8 (permalink)  
Antiguo 08/10/2004, 11:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
Otro detalle ..

Deberas decidirte por uno de tantos ejemplos que has probado, poner el cdigo aqu en este mensaje, hacer las pruebas que te he comentado con ese cdigo y si obtienes errores .. mostrarlos aqu al foro de forma textual.

Un saludo,
  #9 (permalink)  
Antiguo 08/10/2004, 12:10
 
Fecha de Ingreso: septiembre-2002
Ubicacin: Mxico
Mensajes: 356
Antigedad: 15 aos, 3 meses
Puntos: 0
Segn veo, si me genera ls imgenes

Pues segn lo que estoy viendo, si me genera la imgen, en todas las clases me regresa un Notice de variable no definida que se refiere a la cadena de cdigo , pero el resultado que me muesta al final es el cdigo de la imgen.

<br />
<b>Notice</b>: Undefined variable: str in <b>/home/cadi/etest/admin/registronuevo/vimage/vImage.php</b> on line <b>131</b><br />
<br />
<b>Notice</b>: Undefined variable: str in <b>/home/cadi/etest/admin/registronuevo/vimage/vImage.php</b> on line <b>133</b><br />
PNG


IHDR IDATxݚMH[Aj"ն[email protected]Imi.
P<S)zKJ (P"E=ك!^H ;D$
Tl Ǻoߺc쇇L,鯁GRxlGF-ß7ݧd95{jOwzKS=fr>HK2 {i;*;opAّҫ/"zP5jjӟ+U9g>aEtY>5M
u–>tǕ
9߲*!ST %Cv=΂H)5ϿPCo
ʣwM9x#`\'1,'$夬C;!ޅZ0| N VVE@Qms'þ)! \|04ؾL0QxzEǬc 'FocNv:?7 T7fi9KRQ EM IZ|`ʶ?QsڎUu#O֟J L%4. `~ U-~uRqZA;)ȅlJX9'v.!Kߩǎ*
ȗ% B&ꏜ70Mז,j<t<R4y::zώ ^ˌkM T-G@0movJ .~,-~#fq`L*1r9E
R!lL˶xk<
Gwd63/',iK9mC*G0<xxm
1r/bvDy^1=dH%>҆͵s H
ci[vtzwFSڮ9^1
vP^vŌީq"Zh\(4IENDB`

Tambien prob a hacer una imgen yo mismo y el resultado fu satisfactorio, obtuve un rectngulo de color azul, con un texto dentro.

La verdad no tengo ni idea del porque de los errores!!
  #10 (permalink)  
Antiguo 08/10/2004, 12:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
Pues esos "notices" son los que estn "molestando" a las cabeceras HTTP y por eso no te funciona.


Podras poner el cdigo que usas actualmente (ese que generea esos errores) y vemos como solventar el problema ..

En princpio se tratara de bajar el nivel de errores que PHP muestra para ese script al menos con la funcin:

error_reporting() (usala al principio de ese script)
Por ejemplo podras usar:

error_reporting(E_ALL ^ E_NOTICE);

es decir . .que se muestren los errores "graves" pero no los "avisos" como esos "notice"
ms info:
http://www.php.net/error_reporting

Pero, .. esos "notice" deberan ser solventados de otra forma . .por ejemplo usando funciones como isset() o empty() dependiendo del caso para dar valores por defecto o no acceder a variabels que no se han definido si corresponde.

O incluso sea un problema a la hora de recoger esa variable "str" .. por intentar accederla de forma global $str cuando debera ser tal vez $_GET['str'] y eso es lo que te est "avisando" ese error. (eso sucedera por usar cdigo "viejo" no adaptado a los standares de "register_globals" ON de hoy por hoy que tal vez uses esa configuracin en tus servidores. En tu caso est a ON as que toda variable debes accederla por sus arrays superglobales: $_POST, $_GET .. etc .. LEE las FAQ's de este foro .. de las primeras se comenta todo este tema )

Un saludo,
  #11 (permalink)  
Antiguo 08/10/2004, 14:05
 
Fecha de Ingreso: septiembre-2002
Ubicacin: Mxico
Mensajes: 356
Antigedad: 15 aos, 3 meses
Puntos: 0
0k

bueno, las variables de esos notices son generados a partir de las llamdas a funcion que hace el script, no vienen de ningun otro lado.

class vImage{

var $numChars = 3; # Tamanho da String: default 3;
var $w; # Largura da imagem
var $h = 20; # Altura da Imagem: default 15;
var $colBG = "188 220 231";
var $colTxt = "0 0 0";
var $colBorder = "0 128 192";
var $charx = 20; # Espaço lateral de cada char
var $numCirculos = 10; #Numeros de circulos randomicos


function vImage(){
session_start();
}

function gerText($num){
# receber tamanho da string
if (($num != '')&&($num > $this->numChars)) $this->numChars = $num;
# gerar string randmica
$this->texto = $this->gerString();

$_SESSION['vImageCodS'] = $this->texto;
}

function loadCodes(){
$this->postCode = $_POST['vImageCodP'];
$this->sessionCode = $_SESSION['vImageCodS'];
}

function checkCode(){
if (isset($this->postCode)) $this->loadCodes();
if ($this->postCode == $this->sessionCode)
return true;
else
return false;
}

function showCodBox($mode=0,$extra=''){
$str = "<input type=\"text\" name=\"vImageCodP\" ".$extra." > ";

if ($mode)
echo $str;
else
return $str;
}

function showImage(){


$this->gerImage();

header("Content-type: image/png");
ImagePng($this->im);

}

function gerImage(){
# Calcular tamanho para caber texto
$this->w = ($this->numChars*$this->charx) + 40; #5px de cada lado, 4px por char
# Criar img
$this->im = imagecreatetruecolor($this->w, $this->h);
#desenhar borda e fundo
imagefill($this->im, 0, 0, $this->getColor($this->colBorder));
imagefilledrectangle ( $this->im, 1, 1, ($this->w-2), ($this->h-2), $this->getColor($this->colBG) );

#desenhar circulos
for ($i=1;$i<=$this->numCirculos;$i++) {
$randomcolor = imagecolorallocate ($this->im , rand(100,255), rand(100,255),rand(100,255));
imageellipse($this->im,rand(0,$this->w-10),rand(0,$this->h-3), rand(20,60),rand(20,60),$randomcolor);
}
#escrever texto
$ident = 20;
for ($i=0;$i<$this->numChars;$i++){
$char = substr($this->texto, $i, 1);
$font = rand(4,5);
$y = round(($this->h-15)/2);
$col = $this->getColor($this->colTxt);
if (($i%2) == 0){
imagechar ( $this->im, $font, $ident, $y, $char, $col );
}else{
imagecharup ( $this->im, $font, $ident, $y+10, $char, $col );
}
$ident = $ident+$this->charx;
}

}

function getColor($var){
$rgb = explode(" ",$var);
$col = imagecolorallocate ($this->im, $rgb[0], $rgb[1], $rgb[2]);
return $col;
}

function gerString(){
rand(0,time());
$possible="AGHacefhjkrStVxY124579";
while(strlen($str)<$this->numChars)
{
$str.=substr($possible,(rand()%(strlen($possible)) ),1);
}

$txt = $str;

return $txt;
}
}
?>

Ese es el codigo que genera la imagen.

Voy a hacer lo de que me despliegue todos los errores. por otra parte, mi register_globals esta en On, lo cual mas bien quiere decir que al contrario de lo que me dijiste, no debera haber problema entre cdigos viejos o nuevos, ya que la directiva esta encendida y por tanto no es necesario acceder a las variables mediante superglobales no es asi?

Saludos!
  #12 (permalink)  
Antiguo 08/10/2004, 14:16
 
Fecha de Ingreso: septiembre-2002
Ubicacin: Mxico
Mensajes: 356
Antigedad: 15 aos, 3 meses
Puntos: 0
Caray, le meti lo del error_reporting y qued!!!

MMMMMHHHHH!!, pues le puse como me dijiste Cluster la lnea

error_reporting(E_ALL ^ E_NOTICE);

Al inicio del archivo, y con eso me mostro el cdigo sin problemas, creo que ando muy mal en manejo de errores .

Que onda, porque perd tanto tiempo

A final de cuentas, solo espero me digas si no hay bronca si lo dejo as, es decir, esos notices en verdad son solo avisos y no afectan tanto mi programa?


La clase que en verdad quiero usar, me pide especificar un directorio TTF y me imagino que a eso se refiere cuando me regresa esta lnea.

No Truetypefont available for the CaptchaClass.

Se supone que por defecto ya tengo un directorio donde estas se encuentran o que debo hacer?

Saludos y en verdad, muchsimas gracias, prometo meterme mas al aspecto del manejo de errores.
  #13 (permalink)  
Antiguo 08/10/2004, 15:09
 
Fecha de Ingreso: septiembre-2004
Ubicacin: Puebla, Mxico
Mensajes: 81
Antigedad: 13 aos, 2 meses
Puntos: 0
hola yacatl,
El error de que la variable 'str' no esta definida no sera porque en el codigo que mostraste en lugar de refereciar esta variable solo como 'str' deberia ser 'this->str'?

Adems me parece que session_start() deberia ser la primera linea del script php y no estar dentro del contructor de vImage.

Tambien la funcion gerString() al final, no deberia ser getString()?

Tal vez deberias jalarte una fuentes ttf de windows, ponerlas en un directorio y especificar ese directorio, no se me ocurre otra cosa

saludos
__________________
Revista DdS
Revista on-line sobre desarrollo de software
  #14 (permalink)  
Antiguo 08/10/2004, 15:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
Cita:
A final de cuentas, solo espero me digas si no hay bronca si lo dejo as, es decir, esos notices en verdad son solo avisos y no afectan tanto mi programa?
Los "notice" son avisos de una prctica mala de programacin .. por ejemplo:
Cdigo PHP:
$this->postCode $_POST['vImageCodP']; 
debera ser:
Cdigo PHP:
if (isset($_POST['vImageCodP'])){
$this->postCode $_POST['vImageCodP'];
} else {
$this->postCode '';

-------------------

En cuanto a los problemas con las "otra" classe que usas .. Ese directorio para tus TTF no debes por qu tenerlo creado en tu servidor .. Debes crearlo, subir ah tus fuentes (tipografas) que quieras o tenga que usar dicha aplicacin e indicar en la configuracin de esa classe por la varaible/mtodo que corresponda donde est ubicado ese directorio en tu servidor (con ruta ABSOLUTA hacia el).

Un saludo,
Atencin: Ests leyendo un tema que no tiene actividad desde hace ms de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 21:58.