Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Seguridad de un programa junto con wordpress

Estas en el tema de Seguridad de un programa junto con wordpress en el foro de PHP en Foros del Web. Buenas, os comento, estoy realizando un software para mi empresa, y hasta ayer pensé en dejarlo en local (ya que es un proyecto hecho a ...
  #1 (permalink)  
Antiguo 02/08/2013, 02:06
 
Fecha de Ingreso: marzo-2013
Ubicación: Jaén, Andalucía
Mensajes: 129
Antigüedad: 11 años, 1 mes
Puntos: 2
Seguridad de un programa junto con wordpress

Buenas, os comento, estoy realizando un software para mi empresa, y hasta ayer pensé en dejarlo en local (ya que es un proyecto hecho a pelo, sin frameworks ni nada, no sabía de su existencia hasta hace poco :( )
Ya que de seguridad solamente tengo que no se pueda meter nadie sin estar logueado (sesiones) y en ciertas zonas solo ciertos usuarios (comprobando el nombre de la sesión) y que no pueda conectarse un usuario en diferentes sitios a la vez (lo manejo a través de la bbdd)
Y bueno como también estoy realizando la página web (la estoy haciendo en wordpress), he pensado que si meto la carpeta de mi proyecto en la que suba al servidor junto todo lo de wordpress y subo su base de datos (es decir, con la de wordpress o si el servidor me lo permite, tener dos bases de datos), ese proyecto tendría toda la seguridad que pueda ofrecer wordpress verdad?
Creéis que es una buena idea o mejor lo dejo en local? Muchas gracias :)

Última edición por kobety; 02/08/2013 a las 02:16
  #2 (permalink)  
Antiguo 02/08/2013, 02:46
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Seguridad de un programa junto con wordpress

Si te entendí bien preguntas que si pones tu proyecto junto a un wordpress este (tu proyecto) hereda la seguridad que pueda tener wordpress?, es esa le pregunta es un obvio y rotundo no, la seguridad en un sitio web se basa en que tanto preparaste (a nivel código) la aplicación para evitar ataque o intrusiones de usuarios mal intencionados, este tipo de "protección" no se puede heredar a otros proyectos ya que depende como fueron escritos, si en tu proyecto no saneaste (limpiar) variables que proveen información introducida por usuarios, verificación exhausta en archivos subidos por formularios, manipulaciones de cookies, etc etc etc, tu aplicación será muy insegura, así lo pongas en la misma carpeta que la aplicación mas segura, en todo caso, podrías heredar seguridad en cuanto a configuración del servidor apache/mysql, pero ojo, eso no quiere decir que si tu aplicación tiene brechas estas no serán arregladas de manera automática (inyección SQL por ejemplo)...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 02/08/2013, 02:57
 
Fecha de Ingreso: marzo-2013
Ubicación: Jaén, Andalucía
Mensajes: 129
Antigüedad: 11 años, 1 mes
Puntos: 2
Respuesta: Seguridad de un programa junto con wordpress

Gracias por responder, el tema de subida de archivos no hay que temerlo, ya que no se suben y todas las variables he intentado comprobarlas en los inputs con los tipos, y luego mediante php antes de insertarlos en la base de datos, lo que me preocupa es la inyección y todo eso....habría alguna manera de mejorar la seguridad ante ataques? es que de eso estoy un poco cojeando :S
  #4 (permalink)  
Antiguo 02/08/2013, 03:02
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Seguridad de un programa junto con wordpress

Usando PDO te olvidas de inyección SQL, claro, si es usado correctamente, porque eh visto códigos que de plano usan PDO o MySQLi que de plano le quitan toda la seguridad que estos "drivers/interfaces" pueden ofrecer...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 02/08/2013, 03:33
 
Fecha de Ingreso: marzo-2013
Ubicación: Jaén, Andalucía
Mensajes: 129
Antigüedad: 11 años, 1 mes
Puntos: 2
Respuesta: Seguridad de un programa junto con wordpress

ok muchas gracias! es que hace poco encontré este código por internet, y decían de ponerlo en el .htaccess, pero al ponerlo, me da error y no me deja hacer nada :S:S ni acceder a ningún sitio de mi programa
Código PHP:
Ver original
  1. # BEGIN paginaweb
  2. <IfModule mod_rewrite.c>
  3. RewriteEngine On
  4. RewriteBase /paginaweb/
  5. RewriteRule ^index\.php$ - [L]
  6. RewriteCond %{REQUEST_FILENAME} !-f
  7. RewriteCond %{REQUEST_FILENAME} !-d
  8. RewriteRule . /paginaweb/index.php [L]
  9. </IfModule>
  10.  
  11. ## Seguridad extra para PHP  
  12. php_flag safe_mode on  
  13. php_flag expose_php off  
  14. php_flag display_errors off  
  15.  
  16. ## Manejo de errores de Apache. Cuando se produzca uno de estos errores, redirigimos a una pagina especial desarrollada por nosotros.  
  17. ErrorDocument 401 /error401.html  
  18. ErrorDocument 403 /error403.html  
  19. ErrorDocument 404 /error404.html  
  20.    
  21.    
  22. RewriteEngine On  
  23.    
  24. Options +FollowSymLinks  
  25. # Evitar escaneos y cualquier intento de manipulación malintencionada  
  26. # de la URL. Con esta regla es imposible lanzar ataques de inyección (SQL, XSS, etc)  
  27. RewriteCond %{HTTP_USER_AGENT} ^$ [OR]  
  28. RewriteCond %{HTTP_USER_AGENT} ^(-|\.|') [OR]  
  29. RewriteCond %{HTTP_USER_AGENT} ^(.*)(<|>|%3C|%3E)(.*) [NC,OR]  
  30. RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget)(.*) [NC,OR]  
  31. RewriteCond %{HTTP_USER_AGENT} ^(.*)(libwww-perl|libwwwperl|snoopy|curl|wget|winhttp|python|nikto|scan|clshttp|archiver|loader|email|harvest|fetch|extract|grab|miner|suck|reaper|leach)(.*) [NC,OR]  
  32.  
  33. RewriteCond %{REQUEST_URI} ^(/,|/;|/<|/>|/'|/`|/%2C|/%3C|/%3E|/%27|/////) [NC,OR]  
  34. RewriteCond %{HTTP_REFERER} ^(.*)(%00|%08|%09|%0A|%0B|%0C|%0D|%0E|%0F|%2C|<|>|'|%3C|%3E|%26%23|%27|%60)(.*) [NC,OR]  
  35. RewriteCond %{QUERY_STRING} ^(.*)(%00|%08|%09|%0A|%0B|%0C|%0D|%0E|%0F|%2C|%3C|%3E|%27|%26%23|%60)(.*) [NC,OR]  
  36. RewriteCond %{QUERY_STRING} ^(.*)('|-|<|>|,|/|\\|\.a|\.c|\.t|\.d|\.p|\.i|\.e|\.j)(.*) [NC,OR]  
  37. RewriteCond %{HTTP_COOKIE} ^(.*)(<|>|'|%3C|%3E|%27)(.*) [NC]  
  38.  
  39. RewriteRule ^(.*)$ error.php [NC]  
  40. ## No permitir acceso al .htaccess  
  41. order allow,deny  
  42. deny from all  
  43.  
  44. ## Evitar que se liste el contenido de los directorios  
  45. Options All -Indexes  
  46.  
  47. ## Lo mismo que lo anterior  
  48. IndexIgnore *  
  49.  
  50. ## Denegar el acceso a robots dañinos, browsers offline, etc  
  51. RewriteBase /  
  52. RewriteCond %{HTTP_USER_AGENT} ^Anarchie [OR]  
  53. RewriteCond %{HTTP_USER_AGENT} ^ASPSeek [OR]  
  54. RewriteCond %{HTTP_USER_AGENT} ^attach [OR]  
  55. RewriteCond %{HTTP_USER_AGENT} ^autoemailspider [OR]  
  56. RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]  
  57. RewriteCond %{HTTP_USER_AGENT} ^Xenu [OR]  
  58. RewriteCond %{HTTP_USER_AGENT} ^Zeus.*Webster [OR]  
  59. RewriteCond %{HTTP_USER_AGENT} ^Zeus  
  60. ##redireccionar a los robots a otra web  
  61. RewriteRule ^.*$ http://www.otraweb.com [R,L]  
  62.  
  63. # Protegerse contra los ataques DOS limitando el tamaño de subida de archivos  
  64. LimitRequestBody 10240000
  65.  
  66.  
  67.  
  68. # END paginaweb

bueno, comento también que mi código es el siguiente para el login y eso, si me pudierais decir si tiene algún fallo de seguridad me gustaría saberlo, muchas gracias!

login.html
Código HTML:
Ver original
  1. <form action="login.php" method="POST">
  2.     <table>
  3.         <tr><td>Usuario:</td><td> <input required type="text" name="user" /><br /></td></tr>
  4.         <tr><td>Contraseña:</td><td> <input required type="password" name="pass" /><br /></td></tr>
  5.     </table>
  6.     <br>
  7.     <input type="submit" style=" font-weight:900;color: white; background-color: #0F37A1; border: 3pt ridge lightgrey" value="Acceder" />
  8.     </form>

login.php
Código PHP:
Ver original
  1. require_once('funciones.php');
  2. conectar('localhost', 'user', 'pass', 'bbdd');
  3. ini_set("default_charset", "utf-8");
  4. $user = strip_tags($_POST['user']);
  5. $pass = strip_tags(sha1($_POST['pass']));
  6.  
  7. $query = mysql_query('SELECT * FROM usuarios WHERE user="'.mysql_real_escape_string($user).'" AND pass="'.mysql_real_escape_string($pass).'"');
  8. if($existe = mysql_fetch_object($query))
  9. {//Si existe el usuario
  10.     $_SESSION['user'] = $user; //Guardamos la variable de sesión
  11.    
  12.    
  13.    
  14.     $consulta = mysql_query('SELECT * FROM usuarios WHERE user="'.mysql_real_escape_string($user).'"');//Cogemos la fecha de la última conexion y el estado de la conexión;
  15.         while($row=mysql_fetch_array($consulta)){  
  16.             $fecha=$row['Sesion'];
  17.             $conectado=$row['Conectado'];
  18.         }
  19.    
  20.     if($conectado==1){ //Si esta como conectado, comprobamos su última conexión
  21.         $datetime1 = date_create($fecha);
  22.        
  23.         $fechaact=date("d-m-Y H:i:s", time());     
  24.        
  25.         $datetime2 = date_create($fechaact);
  26.        
  27.         $interval = date_diff($datetime2, $datetime1);
  28.  
  29.         if(($interval->format('%d%H%i'))>=00010){//Si hace más de 10 minutos que se ha conectado, dejamos al usuario entrar de nuevo
  30.             $uno=1;
  31.             $meter= mysql_query('UPDATE usuarios
  32.             SET Conectado="'.mysql_real_escape_string($uno).'",
  33.                 Sesion="'.date_format($datetime2, 'Y-m-d H:i:s').'"
  34.             WHERE  usuarios.user = "'.mysql_real_escape_string($user).'"')OR DIE ("fallo");
  35.            
  36.             $_SESSION['logged'] = 'yes';
  37.            
  38.             echo '<script>window.location="logeado.php"</script>';
  39.         }else{
  40.             echo"Este usuario está activo.";
  41.             echo"<br><br><br>
  42.             <a href='login.html'><input type='submit' style=' font-weight:900;color: white; background-color: #0F37A1; border: 3pt ridge lightgrey' value='Volver Al Inicio' onclick='location='login.html''></a>";
  43.  
  44.             exit;  
  45.         }
  46.        
  47.        
  48.     }else{
  49.         $uno=1;
  50.         $fechaact=date("d-m-Y H:i:s", time());
  51.         $datetime2 = date_create($fechaact);
  52.         //var_dump(date_format($datetime2, 'Y-m-d H:i:s'));
  53.                
  54.             $meter= mysql_query('UPDATE usuarios
  55.             SET Conectado="'.mysql_real_escape_string($uno).'",
  56.                 Sesion="'.date_format($datetime2, 'Y-m-d H:i:s').'"
  57.             WHERE  usuarios.user = "'.mysql_real_escape_string($user).'"')OR DIE ("fallo");
  58.        
  59.             $_SESSION['logged'] = 'yes';
  60.        
  61.         echo '<script>window.location="logeado.php"</script>';
  62.     }
  63.    
  64. }else{
  65.         echo 'El usuario y/o pass son incorrectos.';
  66.        
  67.         echo"<form action='login.html'>";
  68.         echo"<br><br><br><input type='submit' style=' font-weight:900;color: white; background-color: #0F37A1; border: 3pt ridge lightgrey' value='Volver Al Inicio' onclick='location='login.html''>";
  69.         echo"</form>";
  70. }

Decir también que en este sitio solo entraría yo por ejemplo y algún empleado para ver como van las cosas, registros, facturas.....

PD: para que conste, el css es que estoy en ello, pero para que tenga un poquito de formato le he puesto color a los inputs :P y perdón por el chorro

Última edición por kobety; 02/08/2013 a las 04:14

Etiquetas: junto, programa, seguridad, usuarios, wordpress
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 07:42.