Seguridad en servidores Mu Online


Proteger nuestra página web y servidor web para evitar Inyecciones

SQL si es que no poseemos MuWeb 0.9.*


*Aclaración: esto solamente es para páginas que no traen protección SQL, de diseño personal, etc, la 0.9 se da como ejemplo no más pero hay muchas que ya traen protección SQL, no reemplacen los archivos existentes, puede ocasionar problemas.


Opción


Vamos al archivo de configuración de nuestra página, sea config.php, config.htpasswd u otros y al principio de este archivo, agregamos el siguiente texto:



dijo:


Luego guardamos y cerramos el archivo. Listo!, la página ya esta protegida un 90% contra estas Inyecciones, además, creara un archivo de texto llamado [WEB]SQL_Injection.txt cada vez que se intenten editar, lo abren y verán lo que intentaron hacer, si editarse, borrar los personajes del servidor u otras cosas.


Opción

Es una simple funcion en PHP, 100% imposible hacer sql injections, ya sea por posts gets o cookies.

Codigo:

dijo:
function clean()
{
foreach($_POST as $key => $val)
{
$_POST[$key] = stripslashes(strip_tags(htmlspecialchars($val, ENT_QUOTES)));
$$key = stripslashes(strip_tags(htmlspecialchars($val, ENT_QUOTES)));
}
foreach($_GET as $key => $val)
{
$_GET[$key] = stripslashes(strip_tags(htmlspecialchars($val, ENT_QUOTES)));
$$key = stripslashes(strip_tags(htmlspecialchars($val, ENT_QUOTES)));
}
foreach($_COOKIE as $key => $val)
{
$_COOKIE[$key] = stripslashes(strip_tags(htmlspecialchars($val, ENT_QUOTES)));
$$key = stripslashes(strip_tags(htmlspecialchars($val, ENT_QUOTES)));
}
}

Para usarla es igual a la primera y el código para llamarla luego es:

dijo:
clean();


Opción (Recomendada)


Por esta me tendrían que hacer mérito jaja. Son funciones php en varios archivos los cuales evitan inyecciones en un 100% y también DoS a la web. Estuve revisando webs, modificando comandos y demás para crear este anti-inject, desde ya muchas gracias a martin que me confirmó que el código fuente en php estaba bien. Seguramente vieron alguna otra guía por ahí que nombraba los archivos sql_inject.php y otros, sin dejarlos, acá los tenés a todos.

1- Vamos a agregar las siguientes lineas a los archivos Index y a todos los que se conecten con el SQL, o sea todos aquellos que posean formularios y envíen o reciban información del mismo, Registro, Cambio y recupero de contraseñas, Rankings, Panel de usuario y demás.(Nota: en algunas webs solo se requiere en el index.php puesto que incluye a las demás webs como register.php por includes dejando todo en un mismo documento)(Aclaración, los códigos mostrados no son correctos están adaptados para que T! no los muestre como iconos, en el archivo subido se encuentran correctamente

dijo:


Estas líneas son agregadas luego de las lineas que efectuan la conexión con el SQL siendo a veces

dijo:
require 'config.php';
$name = stripslashes($_POST['name']);
$login = stripslashes($_POST['login']);

$msconnect=mssql_connect("dbhost","dbuser","dbpass " );
$msdb=mssql_select_db("MuOnline",$msconnect)


Ó

dijo:
//Tiempo de Esperar para el Include
ob_start();
$timeStart=gettimeofday();
$timeStart_uS=$timeStart["usec"];
$timeStart_S=$timeStart["sec"];
//Include By ZeBeRuZ
function modules(){
if(isset($_GET['op'])){
$op = $_GET['op'];
$op = str_replace("/","",$op);
$op = str_replace("..","",$op);
if (is_file("modulos/".$op.".php" )) {
include("modulos/".$op.".php" );
} else {


Depende la web es como lo vamos a encontrar, vuelvo a aclarar es para gente más o menos avanzada en el tema y que quiere hacer algo personal, busquen las lineas correspondientes al principio del archivo.

Las líneas en rojo se pueden evitar ya que más adelante veremos que las mismas son reemplazadas en otro archivo.
Continuando, siendo Seguridad.php

dijo:
include("modulos/sql_inject.php" );
include("modulos/anti-inject-base64.php" );
include("modulos/sql_check.php" );
include("modulos/ctracker.php" );
include("modulos/anti-dos.php" );
?>


Y ahora todos los archivos prometidos, recuerden cambiar la extensión .txt por .php para que funcione todo correctamente.