Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: sr.mcbecker en Enero 29, 2013, 08:08:26 AM

Título: [SOLUCIONADO] Añadiendo seguridad a mi web
Publicado por: sr.mcbecker en Enero 29, 2013, 08:08:26 AM
Hola, os cuento, estoy haciendo mi web y quiero darle protección lo normal y no se del tema ni como empezar, estoy probando a hacerlo con POO en php os paso un trozo de código y otra cosa de acunetix sobre errores que me da a ver si me podeis ayudar un poco sobre el problema.
Código (php) [Seleccionar]
class Conexion {
private $Server;
private $UserName;
private $Pass;
private $DataBase;
private $Conexion;
private $Query;
private $Iniciate;
public function Conexion(){
$Iniciate=false;
}
public function setConexion($server,$database,$username,$pass){
$this->Server=$server;
$this->DataBase=$database;
$this->UserName=$username;
$this->Pass=$pass;
$this->Conexion=mysql_connect($this->Server,$this->UserName,$this->Pass);
if(!mysql_select_db($this->DataBase,$this->Conexion)) {
echo "Error en mysql_select_db";
return false;
}
$this->Iniciate=true;
echo "Conexion aceptada";
return true;
}
public function Query($query){
if($this->Iniciate==true){
$this->Query=$query;
if(mysql_num_rows(mysql_query($this->Query,$this->Conexion))==false)echo "error en mysql_num_rows";
else {
$querytodb=mysql_query($this->Query,$this->Conexion);
if(mysql_result($querytodb,0)==false){
echo "no hay resultado";
}
else {
$result=mysql_result($querytodb,0);
return $result;
}
}
}
}
}
$myConexion = new Conexion();
$myConexion->setConexion("localhost","db","root","toor");


Bueno y ahora os paso un screen del acunetix que no tiene nada que ver con el código.
Uno de mis problemas es que no se por donde empezar para aprender seguridad web.
(http://i49.tinypic.com/359bnly.png)
Título: Re:[Ayuda] Añadiendo seguridad a mi web
Publicado por: Alex en Enero 29, 2013, 09:53:36 AM
Muy interesante, nunca había usado el acunetix ni visto el uso original del mismo.

se agradece.

saludos!
Título: Re:[Ayuda] Añadiendo seguridad a mi web
Publicado por: sr.mcbecker en Enero 29, 2013, 10:05:26 AM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Muy interesante, nunca había usado el acunetix ni visto el uso original del mismo.

se agradece.

saludos!
no es ningún aporte busco ayuda =DDDDDD  :o
Título: Re:[Ayuda] Añadiendo seguridad a mi web
Publicado por: Alex en Enero 29, 2013, 10:26:18 AM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Muy interesante, nunca había usado el acunetix ni visto el uso original del mismo.

se agradece.

saludos!
no es ningún aporte busco ayuda =DDDDDD  :o

perdon entendí cualquier cosa jajajaj

1º  lo muevo a php

2º mysql está desaconcejado usarlo en cambio puedes usar mysqli (improved)

http://ar2.php.net/manual/es/function.mysql-query.php (http://ar2.php.net/manual/es/function.mysql-query.php) (si te fijas en esta web OFICIAL DE PHP lo dice claramente)

3º yo no declararía las variables como private, a menos que quieras heredar la clase deberías ponerle Protected.

4º yo en lo personal aría toda la parte de setConexion directamente en el constructor de la clase:

Public function __construct ($server,$database,$username,$pass)
{
   $this->Server=$server;
                        $this->DataBase=$database;
                        $this->UserName=$username;
                        $this->Pass=$pass;
                        $this->Conexion=mysql_connect($this->Server,$this->UserName,$this->Pass);
                        if(!mysql_select_db($this->DataBase,$this->Conexion)) {
                                echo "Error en mysql_select_db";
                                return false;
                        }
                        $this->Iniciate=true;
                        echo "Conexion aceptada";
                        return true;
}


cosa de que cuando declares la clase ya hagas la conexión:

$myConexion = new Conexion("localhost","db","root","toor");

dos concejos más:

Podes usar una clase gestora de bases de datos que ya tenga seguridad incorporada.

y tendrías que aprender MVC además de poo que es muy útil y como utilizar gestores de plantilla.

O directamente un framework.

Volviendo al tema de seguridad, http://underc0de.org/foro/php/evitar-injeccion-sql/ (http://underc0de.org/foro/php/evitar-injeccion-sql/) ahí hay una charla entera sobre como poner seguridad bien, empezó siendo un aporte viejo que encontré y al estar desactualizado empezó un debate sobre las mejores formas de hacer segura una app.

por ultimo éste es un proyecto pequeño de un sistema de blogs que hice en php, podría darte un par de ideas el código, miralo https://github.com/alexander171294/iblog.

saludos!
Título: Re:[Ayuda] Añadiendo seguridad a mi web
Publicado por: ~ Yoya ~ en Enero 29, 2013, 11:11:09 AM
Desde ahora te digo que programar en POO no es un estilo de programación, que tiene clase, métodos, atributos y eso. Que utilices clases, métodos y atributos no significa que estés haciendo buen uso de este. Las personas que ingresan a este mundo por esta vía (hacking y eso), suelen tener muchos desconocimiento sobre el propósito de las cosas.

Muchos no aplican encapsulamiento, abstraccion y polimorfismo (aunque todavía no es soportado por PHP), interfaces. Tampoco nadie aplica principios como Open/closed (http://en.wikipedia.org/wiki/Open/closed_principle), Single responsibility (http://en.wikipedia.org/wiki/Single_responsibility_principle), DRY (http://en.wikipedia.org/wiki/Don't_repeat_yourself). Y mucho menos aplican patrones de diseños.

Aprender directamente un Framework no es ningún buen consejo, eso solo te limita como programador. Tampoco aconsejar que alguien aprenda directamente MVC, no es buena practica utilizar un patron de diseño sin saber si en verdad es necesario ocuparlo, es mucho mejor conocer varios y aplicar el que mejor se adapte. Muchas veces utilizan MVC y ni saben porque lo hacen, simplemente muchos lo usan y ellos igual lo usan.

Y sobre seguridad, pues es pura logica. Para encontrar vulnerabilidad hay 2 claves, los bug's están donde esta la interacción con el usuario, osea donde el sistema recibe información del usuario para luego poder realizar una acción. Por algo dicen que es imposible penetrar una web que este 100% en HTML, porque no hay interacción con el usuario. Luego de investigar como recibe el sistema la información del usuario y luego como maneja dicha información, toca pensar como podrías generar algo que desees apartir de eso.

Te recomiendo que leas sobre: XSS, CSRF, SQLI y eso. El problema esta en que muchos solo se basan en buscar las vulnerabilidades ya conocidas, pero si te basas en la lógica siempre, podrás creas diferentes nuevos metodos, y quien sabe si luego expone un metodo nuevo totalmente nuevo.

Saludos.
Título: Re:[Ayuda] Añadiendo seguridad a mi web
Publicado por: Alex en Enero 29, 2013, 11:20:51 AM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Desde ahora te digo que programar en POO no es un estilo de programación, que tiene clase, métodos, atributos y eso. Que utilices clases, métodos y atributos no significa que estés haciendo buen uso de este. Las personas que ingresan a este mundo por esta vía (hacking y eso), suelen tener muchos desconocimiento sobre el propósito de las cosas.

Muchos no aplican encapsulamiento, abstraccion y polimorfismo (aunque todavía no es soportado por PHP), interfaces. Tampoco nadie aplica principios como Open/closed (http://en.wikipedia.org/wiki/Open/closed_principle), Single responsibility (http://en.wikipedia.org/wiki/Single_responsibility_principle), DRY (http://en.wikipedia.org/wiki/Don't_repeat_yourself). Y mucho menos aplican patrones de diseños.

Aprender directamente un Framework no es ningún buen consejo, eso solo te limita como programador. Tampoco aconsejar que alguien aprenda directamente MVC, no es buena practica utilizar un patron de diseño sin saber si en verdad es necesario ocuparlo, es mucho mejor conocer varios y aplicar el que mejor se adapte. Muchas veces utilizan MVC y ni saben porque lo hacen, simplemente muchos lo usan y ellos igual lo usan.

Saludos.

nunca dije que directamente aprenda MVC, solo le aconcejé aprender sobre eso, y eso incluye la idea, y por que usarlo o no.

sugerí un framework porque este post estaba orientado a ponerle seguridad no a aparender.

si es verdad normalmente no se aprende sobre principios de encapsulamiento porque da la casualidad que la gente que sabe no postea absolutamente nada al respecto.

saludos!
Título: Re:[Ayuda] Añadiendo seguridad a mi web
Publicado por: sr.mcbecker en Enero 29, 2013, 12:13:04 PM
Muchas gracias, hacía tiempo que no me aconsejaban tanto, yo se programar c++ pero tengo que profundizar en  la POO más todavía, me habían recomendado un colega que me mire PDO, lo que haré sera mirarlo todo =D, gracias.
Título: Re:[Ayuda] Añadiendo seguridad a mi web
Publicado por: Destructor.cs en Enero 29, 2013, 12:55:16 PM
Amigo te recomiendo este post para conectarte a una base de datos, lo hice para ti asique sientete importante xddd http://underc0de.org/foro/base-de-datos/creando-una-capa-de-abstraccion-con-php-y-mysqli/
Título: Re:[Ayuda] Añadiendo seguridad a mi web
Publicado por: Alex en Enero 29, 2013, 01:24:08 PM
genial!

saludos!
Título: Re:[Ayuda] Añadiendo seguridad a mi web
Publicado por: sr.mcbecker en Enero 29, 2013, 02:24:30 PM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Amigo te recomiendo este post para conectarte a una base de datos, lo hice para ti asique sientete importante xddd http://underc0de.org/foro/base-de-datos/creando-una-capa-de-abstraccion-con-php-y-mysqli/
que grande eres =D lo miraré , gracias .!
Título: Re:[Ayuda] Añadiendo seguridad a mi web
Publicado por: Destructor.cs en Enero 29, 2013, 03:46:43 PM
Graciaas xD Si tienes alguna duda me mandas un mensaje!