[PHP] Ban System 0.3

Iniciado por BigBear, 8 Enero 2016, 19:22 PM

0 Miembros y 1 Visitante están viendo este tema.

BigBear

Un simple script en PHP para banear una IP en una pagina.

Una imagen :



Los codigos :

index.php

Código (php) [Seleccionar]

<?php

// Ban System 0.3
// (C) Doddy Hackman 2015

// Login

$username "admin"// Edit
$password "21232f297a57a5a743894a0e4a801fc3"// Edit

//

$index "admin.php"// Edit

if (isset($_GET['poraca'])) {
    
    echo 
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Login</title>
      <link rel="shortcut icon" href="images/icono.png">
      <link href="style.css" rel="stylesheet" type="text/css" />
   </head>
   <body>
      <center><br>
         <div class="post">
            <h3>Login</h3>
            <div class="post_body">
               <img src="images/login.jpg" width="562" height="440" />
               <br />
               <form action="" method=POST>
                  Username : <input type=text size=30 name=username /><br 

/><br />
                  Password : <input type=password size=30 name=password 

/><br /><br />
                  <input type=submit name=login style="width: 100px;" 

value=Login /><br /><br />
               </form>
            </div>
         </div>
      </center>
   </body>
</html>'
;
    
    if (isset(
$_POST['login'])) {
        
        
$test_username $_POST['username'];
        
$test_password md5($_POST['password']);
        
        if (
$test_username == $username && $test_password == $password) {
            
setcookie("login"base64_encode($test_username "@" $test_password));
            echo 
"<script>alert('Welcome idiot');</script>";
            
$ruta "http://" $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/" $index;
            echo 
'<meta http-equiv="refresh" content="0; url=' htmlentities($ruta) . '" 

/>'
;
        } else {
            echo 
"<script>alert('Fuck You');</script>";
        }
    }
    
} else {
    echo 
'<meta http-equiv="refresh" content="0; 

url=http://www.petardas.com" />'
;
}

// The End ?

?>



admin.php

Código (php) [Seleccionar]

<?php

// Ban System 0.3
// (C) Doddy Hackman 2015

error_reporting(0);

// Login

$username "admin"// Edit
$password "21232f297a57a5a743894a0e4a801fc3"// Edit

// DB

$host  "localhost"// Edit
$userw "root"// Edit
$passw ""// Edit
$db    "ban"// Edit

if (isset($_COOKIE['login'])) {
    
    
$st base64_decode($_COOKIE['login']);
    
    
$plit explode("@"$st);
    
$user $plit[0];
    
$pass $plit[1];
    
    if (
$user == $username and $pass == $password) {
        
        
mysql_connect($host$userw$passw);
        
mysql_select_db($db);
        
        echo 
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Ban System 0.3</title>
      <link href="style.css" rel="stylesheet" type="text/css" />
      <link rel="shortcut icon" href="images/icono.png">
   </head>
   <body>
   <center>'
;
        
        
mysql_connect($host$userw$passw);
        
mysql_select_db($db);
        
        echo 
'         <br><img src="images/ban.png" /><br><br>';
        
        if (isset(
$_POST['instalar'])) {
            
            
$todo "create table ban_system (
id int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
ip TEXT NOT NULL,
PRIMARY KEY(id));
"
;
            
            if (
mysql_query($todo)) {
                echo 
"<script>alert('Installed');</script>";
                echo 
'<meta http-equiv="refresh" content=0;URL=>';
            } else {
                echo 
"<script>alert('Error');</script>";
            }
        }
        
        if (
mysql_num_rows(mysql_query("show tables like 'ban_system'"))) {
            
            echo 
"<title>Ban System 0.3 Administracion</title>";
            
            if (isset(
$_POST['ipadd'])) {
                
                
$ipfinal ip2long($_POST['ipadd']);
                
$ipaz    $_POST['ipadd'];
                
                if (
$ipfinal == -|| $ipfinal === FALSE) {
                    echo 
"<script>alert('IP invalid');</script>";
                    
                } else {
                    
                    if (
mysql_query("INSERT INTO ban_system (id,ip) values (NULL,'$ipaz')")) {
                        echo 
"<script>alert('IP added');</script>";
                    } else {
                        echo 
"<script>alert('Error');</script>";
                    }
                    
                    
                }
            }
            
            if (isset(
$_GET['del'])) {
                
$id $_GET['del'];
                if (@
mysql_query("DELETE FROM ban_system where id ='$id'")) {
                    echo 
"<script>alert('IP Deleted');</script>";
                } else {
                    echo 
"<script>alert('Error');</script>";
                }
            }
            
            echo 
'
            <div class="post">
                <h3>Add IP</h3>
                   <div class="post_body">'
;
            
            echo 
"<br>
<form action='' method=POST>
<b>IP : </b><input type=text name=ipadd value=127.0.0.1> <input type=submit style='width: 100px;' value=Add>
</form><br>"
;
            
            echo 
'                </div>
            </div>'
;
            
            
            
$sql       "select id from ban_system";
            
$resultado mysql_query($sql);
            
$cantidad  mysql_num_rows($resultado);
            
            echo 
'
            <div class="post">
                <h3>Banned : ' 
htmlentities($cantidad) . '</h3>
                   <div class="post_body"><br>'
;
            
            if (
$cantidad <= 0) {
                echo 
'<b>No entries found</b><br>';
            } else {
                
                echo 
'<table>
<td><b>ID</b></td><td><b>IP</b></td><td><b>Option</b></td><tr>'
;
                
                
$sen = @mysql_query("select * from ban_system order by id ASC");
                
                while (
$ab = @mysql_fetch_array($sen)) {
                    
                    echo 
"<td>" htmlentities($ab[0]) . "</td><td>" htmlentities($ab[1]) . "</td><td><a href=?del=" htmlentities($ab[0]) . ">Delete</a></td><tr>";
                }
                
                echo 
'</table>';
                
            }
            
            echo 
'                <br></div>
            </div>'
;
            
            echo 
"</table>
</center>
"
;
            
//
        
} else {
            
            echo 
'
            <div class="post">
                <h3>Installer</h3>
                   <div class="post_body">'
;
            
            echo 
"
<form action='' method=POST>
<h2>Do you want install Ban System ?</h2><br>
<input type=submit style='width: 100px;' name=instalar value=Install><br><br>
</form>"
;
            
            echo 
'                </div>
            </div>'
;
            
        }
        
        echo 
'
   <br><h3>(C) Doddy Hackman 2015</h3><br>
   </center>
   </body>
</html>'
;
        
        
mysql_close();
        exit(
1);
        
    } else {
        echo 
"<script>alert('Fuck You');</script>";
    }
} else {
    echo 
'<meta http-equiv="refresh" content="0; url=http://www.petardas.com" />';
}

?>



style.css

Código (css) [Seleccionar]

/*

==-----------------------------------==
|| Name : DH Theme                   ||
|| Version : 0.8                     || 
|| Author : Doddy H                  ||
|| Description: Templante            ||
|| Date : 14/1/2015                  ||
==-----------------------------------==

*/

body {
background:transparent url("images/fondo.jpg") repeat scroll 0 0;
color:gray;
font-family:helvetica,arial,sans-serif;
font-size:14px;
text-align:center;
}

a:link {
text-decoration:none;
color:orange;
}
a:visited {
color:orange;
}
a:hover {
color:orange;
}

td,tr {
border-style:solid;
border-color: gray;
border-width: 1px;
background: black;
border: solid #222 2px;
color:gray;
font-family:helvetica,arial,sans-serif;
font-size:14px;
text-align:center;

word-wrap: break-word;
word-break:break-all;
}

input {
border-style:solid;
border-color: gray;
border-width: 1px;
background: black;
border: solid #222 2px;
color:gray;
font-family:helvetica,arial,sans-serif;
font-size:14px;
}

.post {
background-color:black;
color:gray;
margin-bottom:10px;
width:600px;
word-wrap: break-word;
}

.post h3 {
background-color:black;
color:orange;
background-color:#000;
border: solid #222 2px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
padding:5px 10px;
}

.post_body {
background-color:black;
margin:-20px 0 0 0;
color:white;
background-color:#000;
border: solid #222 2px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
padding:5px 10px;
}

/* The End ? */


ban.php

Código (php) [Seleccionar]

<?php

// Ban System 0.3
// (C) Doddy Hackman 2015

error_reporting(0);

// DB

$host  "localhost"// Edit
$userw "root"// Edit
$passw ""// Edit
$db    "ban"// Edit

//

$texto "Acceso Denegado"// Edit

mysql_connect($host$userw$passw);
mysql_select_db($db);

$ipa ip2long($_SERVER['REMOTE_ADDR']);
$ip  $_SERVER['REMOTE_ADDR'];

if (
$ip == "::1") {
    
$ipa 1;
}

if (
$ipa == -|| $ipa === FALSE) {
    echo 
"<script>alert('Good try');</script>";
} else {
    
    if (
$ip == "::1") {
        
$ip "127.0.0.1";
    }
    
$re mysql_query("select ip from ban_system where ip='$ip'");
    
    if (
mysql_num_rows($re) > 0) {
        echo 
"<center><h1>" htmlentities($texto) . "</h1></center>";
        exit(
1);
    }
    
}

mysql_close();

// The End ?

?>



test.php

Código (php) [Seleccionar]

<?php

include("ban.php");

echo 
"aca toy";

?>



Si quieren bajar el programa lo pueden hacer de aca.

LuffyFF

#1
Hola. Está buena la idea de compartir scripts hechos por la comunidad. Me gusta ver y estudiar códigos.

Igual, te recomendaría seguir mejorando tu programación en PHP y aplicar mejores prácticas. Dudo que mucha gente use ese sistema.

Todo esto, te lo escribo de manera constructiva. Para que puedas seguir creciendo y mejorar como programador.

Algunas cosas que noté... No es muy profesional que te redirija a una pagina porno. Ni tampoco es profesional que salgan malas palabras. Yo ya solo por eso, ni lo usaría. Demuestra infantilidad, cero profesionalismo y algo que habla mal de ti.

El código es desordenado y está todo muy enchanchado y muy spaghetti.

Los datos de conexión de base de datos, ¿Por qué tengo que llenar los mismos datos dos veces o la cantidad de archivos que hagan conexión?. Lo podrías unificar en un config.php

La contraseña de login, hay que ponerla en el archivo admin.php y hay que ponerlo en md5. Es mejor que el script haga la conversión a md5 y poner la contraseña en plano en el archivo admin.php que es donde se escribe la contraseña. Vamos que yo no voy a pasar la contraseña a md5 solo para guardarlo ahí (pierdo tiempo, tengo que buscar un convertidor a md5 o programar uno).

Te recomiendo usar clases, y si es muy avanzado, pues, funciones. Y mejorar el código.

En el admin.php, repites varias veces la conexión a la base de datos. el mysql_connect, y mysql_select_db. Lo ideal es intentar no repetir código ya escrito.

Si publicaste este script, para uso final, y es por que lo publicaste para que la gente del foro pueda usarlo, pues, tendrías que borrar las líneas de debug, o bien, programar para desactivar o activar modo debug.

Usas mucho alert en JS, eso no es bueno. No es tan agradable. Como que, el diseño del sistema parece muy lindo, pero está lleno de alertas en JS simples, y arruina la experiencia del usuario.

Tienes que usar la libreria mysqli, o PDO. Pero no mysql, eso quedo obsoleto en versiones recientes de PHP.
http://php.net/mysqli

Hay muchas cosas que no tengo ganas de revisar, pero hay muchas cosas.

Ese script tampoco es seguro para ataques XSS o SQL Injection.

No te voy a decir que la idea no es mala, pero es parte del pasado. Antes se necesitaba de esto, pero te hablo hace más de 10 años. Los scripts como foros ya traen integrado esto, y de mejor manera. Y los que tienen programación propia, pues lo programan ellos. Lo ideal es bannear por Firewall, .htaccess, cPanel o Plesk. Lo que hace tu script es que no muestre el contenido. Por más que bannes la IP desde el script, el script sigue haciendo conexión a la base de datos para averiguar la IP. Y por lo tanto, esto, no es eficaz cuando hay ataques a la página. Quizás sirva para bloquear a algún mono, pero como te dije, es más rápido, y eficaz bloquear por .htaccess o por Firewall, que por este script en PHP, que si bien, hay que también saber integrarlo a la página.


No es por ofender, pero el código es muy feo, y sucio. E inecesariamente desordenado y largo. Aún tienes para mejorar tanto en tu script, como en tu nivel de programación.

Vi también que largaste el proyecto como opensource en Sourceforge.net, pero tu código no está documentado. Y además, no tiene licencia  :-X. O sea...?

Otra cosa constructiva, es que tienes que documentar las cosas o comentar, como se usa. Una persona normal, que en tal raro caso se interesase en usar tu script, no sabría usarlo.

No entiendo el próposito de registrar este script como opensource en sourceforge. O sea, dudo que gente se interese en participar en el proyecto o que la gente lo use.

Cuando ya tengas más experiencia, podrás hacer un proyecto opensource.

Todo esto con la mejor onda! Te contesté, para que puedas mejorar tus habilidades como programador en PHP. No por criticar tu script, sino para que puedas crecer como programador.

Saludos