Ver Mensaje Individual
  #89 (permalink)  
Antiguo 17/05/2010, 05:40
Avatar de Flow89
Flow89
 
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Seguridad en PHP [Importante];

Cita:
Iniciado por millan2525 Ver Mensaje
Tampoco tienes por qué hacerlo.

Yo he creado un sistema con contraseñas encriptadas sha-1, y lo único que cuando se olvidan se tiene que generar otra. En mi caso es sencillo porque las crea el admin y no se mandan al correo xD

Aunque te cuesta más hacer un panel de edicción rápida de usuarios, que te aparezcan registros y las contraseñas solo se cambian si pone algo xD
Ya tengo creado el panel, te dejo el código por si te sirve de algo.


Aquí te muestra todos los usuarios para que elijas el que quieres modificar, solo te lo muestra si estas logueado, sino te redirecciona, ademas los resultados estan paginados :
Código PHP:
<?php
include("login.php");
if(
$loginCorrecto)
  { 
?>

<html>
<head>
<title>Panel de Administraci&oacute;n - Borrar Noticias</title><style type="text/css">
<!--
body {
    background-image: url(../imagenes/bg_pattern.gif);
}
-->

</style>
<script type="text/javascript" src="scripts/widgEditor.js"></script>
<link href="css/widgEditor.css" rel="stylesheet" type="text/css" /> 
<link href="css/widgContent.css" rel="stylesheet" type="text/css" /> 
<link href="css/main.css" rel="stylesheet" type="text/css" /> 
<link href="css/info.css" rel="stylesheet" type="text/css" /> 
<link href="../css/general.css" rel="stylesheet" type="text/css" /> 

</head>
<body>
<table width="550" border="0" align="center">
  <tr>
    <td><img src="http://www.forosdelweb.com/f18/imagenes/panel.png" width="550" height="200"></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><div align="center" class="Estilo16 Estilo40">Borra un Usuario | <a href='../loginpanel/administracion.php'> Volver </a></div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr><td><table width="550" border="1" align="center">
<tr align="center" class="estilo16"><td><b> Nick </b></td><td><b> Password </b></td><td><b> Nombre </b></td><td><b> Email </b></td><td><b> Borrar </b></td></tr>
<?php

//Nos comenectamos a la BBDD.
include("conex.php");

//Recogemos la variable PAGS.
$pags=$_GET[pags];

//Propiedades de Paginacion.
if (!isset($pags))
$pags 0;
$cantidad 10;
$inicial $pags $cantidad;

//Realizamos la busqueda en la BBDD.
$usuarios=mysql_query("SELECT * FROM usuarios ORDER BY nick DESC LIMIT $inicial,$cantidad"$connect);
$totalnoticias=mysql_num_rows($usuarios);

//Calculamos el numero de páginas a mostrar.
$contar=mysql_query("SELECT * FROM usuarios",$connect);
$totalpaginas=mysql_num_rows($contar);
$paginas intval($totalpaginas $cantidad);

//Imprimimos los resultados.
while ($row=mysql_fetch_array($usuarios)){
echo 
"<tr align=\"center\"><td width=\"100\">".$row[nick]."</td><td width=\"100\">".$row[password]."</td><td width=\"100\">".$row[nombre]."</td><td width=\"200\">".$row[email]."</td><td width=\"50\" class=\"estilo16\"><a href=\"editar.php?id=".$row[id]."\">Editar</a></td></tr>";
}
echo 
"<br>";

echo 
"<tr>";

//Creamos los enlaces, Anterior/Siguiente.
echo "<center><p>";
if (
$pags <>0)
{
$url $pags 1;
echo 
"<font><a href='noticiero.php?id=".$id."&pags=".$url."'> Anterior « </a></font>";
}
else {
echo 
" ";
}
for (
$i 0$i<($paginas 1); $i++) {
if (
$i == $pags) {
echo 
"<font><b>$i</b></font>";
}
else {
echo 
"<font><a href='noticiero.php?id=".$id."&pags=".$i."'>" .$i"</a></font>";
}
}
if (
$pags $paginas) {
$url $pags 1;
echo 
"<font><a href='noticiero.php?id=".$id."&pags=".$url."'> » Siguiente </a></font>";
}
else {
echo 
" ";
}
echo 
"</p></center>";

echo 
"</tr>";
?></table></td>
  </tr>
</table>
<?php  }
//si no lo esta, mostramos este error
  
else

  {
  echo 
"<META HTTP-EQUIV=\"refresh\" CONTENT=\"2; url=../panel.php\">";
  echo 
"<table style=\"height:100%;width:100%;\"border=\"0\"><tr><td class=\"estilo34\"><div align=\"center\">El sistema no lo ha identificado, solo los usuarios registrados tienen acceso a esta area<br> Seras redireccionado automaticamente.</div></td></tr></table>";
  }
?>
</body>
</html>

En este (el formulario) editas los datos:
Código PHP:
<?php
include("login.php");
if(
$loginCorrecto)
  { 
?>

<html>
<head>
<title>Panel de Administracion - Noticias</title>
<script type="text/javascript" src="scripts/widgEditor.js"></script>
<link href="css/widgEditor.css" rel="stylesheet" type="text/css" /> 
<link href="css/widgContent.css" rel="stylesheet" type="text/css" /> 
<link href="css/main.css" rel="stylesheet" type="text/css" /> 
<link href="css/info.css" rel="stylesheet" type="text/css" /> 
<link href="../css/general.css" rel="stylesheet" type="text/css" /> 
<style type="text/css">
<!--
body {
    background-image: url(../imagenes/bg_pattern.gif);
}
-->
</style>
</head>
<body >
<div id="gnoticias">
<?
      
//recibimos la variable id enviada en el enlace por GET
      
$id=$_GET[id];
       include (
"conex.php");
      
//hacemos las consultas
      
$result=mysql_query("select * from usuarios where id='$id'",$connect);
      
//Una vez seleccionados los registros los mostramos para su edición
      
while($row=mysql_fetch_array($result)) {
      echo 
"<div id=\"gnoticias\">
<table width=\"650\" border=\"0\" align=\"center\">
    <tr>
      <td colspan=\"2\"><div align=\"center\"><img src=\"../imagenes/panel.png\" width=\"500\" height=\"200\" /></div></td>
<tr>
    <td><div align=\"center\" class=\"Estilo16 Estilo40\">Edita un Usuario | <a href='../loginpanel/administracion.php'> Volver </a></div></td>
  </tr>
<tr><td>
      <form action=\"edit.php\" method=\"post\">
      <input type=\"hidden\" name=\"id\" value=\""
.$row[id]."\">
<b>Nick:</b><br>
<input type=\"text\" name=\"nick\" value=\""
.$row[nick]."\"><br>
<br><b>Nombre:</b><br>
<input type=\"text\" name=\"nombre\" value=\""
.$row[nombre]."\"><br>
      <br><b>Password:</b><br>
      <input type=\"text\" name=\"password\" value=\""
.$row[password]."\"><br>
      <br><b>Email:</b><br>
      <input type=\"text\" name=\"email\" value=\""
.$row[email]."\"><br>     <br><input type=\"submit\" value=\"Guardar\" > <input name=\"restablecer\" type=\"reset\" id=\"restablecer\" value=\"Limpiar\" />
      </form>
</td></tr>
</table>"
;
      }
      
mysql_free_result($result);
      
mysql_close($connect);
      
?>
</div>
<?php  }
//si no lo esta, mostramos este error
  
else

  {
  echo 
"<META HTTP-EQUIV=\"refresh\" CONTENT=\"2; url=../panel.php\">";
  echo 
"<table style=\"height:100%;width:100%;\"border=\"0\"><tr><td class=\"estilo34\"><div align=\"center\">El sistema no lo ha identificado, solo los usuarios registrados tienen acceso a esta area<br> Seras redireccionado automaticamente.</div></td></tr></table>";
  }
?>
</body>
</html>
Y este procesa la edicion:

Código PHP:
<html>
<head>
<title>Panel de Administracion - Noticias</title>
<link href="../css/general.css" rel="stylesheet" type="text/css" /> 
<style type="text/css">
<!--
body {
    background-image: url(../imagenes/bg_pattern.gif);
}
-->
</style>
</head>
<body>
<?php
include("login.php");
if(
$loginCorrecto)
  { 
      
//recibimos las variables enviadas por el formulario
      
$id=$_POST[id];
      
$nick=$_POST[nick];
      
$password=$_POST[password];
      
$nombre=$_POST[nombre];
      
$email=$_POST[email];



    
    
//incluimos el archivo de conexion
    
include ("conex.php");

      
//modificamos los datos de la base según variables recibidas
      
mysql_query("update usuarios Set nick='$nick',password='$password',nombre='$nombre',email='$email' where id='$id'"$connect);
      
header("location: ../index.php");
}
//si no lo esta, mostramos este error
  
else

  {
  echo 
"<META HTTP-EQUIV=\"refresh\" CONTENT=\"2; url=../panel.php\">";
  echo 
"<table style=\"height:100%;width:100%;\"border=\"0\"><tr><td class=\"estilo34\"><div align=\"center\">El sistema no lo ha identificado, solo los usuarios registrados tienen acceso a esta area<br> Seras redireccionado automaticamente.</div></td></tr></table>";
  }
?>
</body>
</html>

Me has dado una buena idea, con eso de que solo se modifica si escriben algo, ahora lo que puedo hacer es quitar el .$row[password]. y que no la muestre, y solo si escriben algo en ese campo se añada tambien al update.


Si dejo un campo vacio y le añado al update, es decir, $password no tiene nada porque no han escrito nada, pero en el update esta puesto $password, me reemplazaría el cntenido del campo en la bbdd y lo dejaría vacío?

Si pasase eso tendria que hacer un if, que compruebe, si $password esta vacio, un if que haga un update sin el $password, si contiene algo, else update con el $password.
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.