їQuй es y cуmo se puede evitar? MYSQL Inyection.
#1

Buenas(os) dнas/tardes/noches, les pondrй en situaciуn; estoy programando un gamemode MYQL y he leнdo mucho sobre las inyecciones MYSQL para atacar un servidor, entonces me gustarнa saber alguien que tenga conocimiento de esto pueda comentar їQuй es y cуmo se puede evitar?, para asн no solo yo, si no otros que estйn en las mismas puedan evitar estos ataques con consejos que йste aporte, leн algo en secciуn inglesa pero no entendн por el idioma y el traductor no ayuda mucho, la idea es ayudarnos como comunidad de la gente asquerosa.
Reply
#2

Posdata; Uso la versiуn MYSQL R7, leн que esta es mбs vulnerable ante estos ataques їeso cierto? asн actualizo.
Reply
#3

Esto capas deberнa ser OFF-TOPIC xD

http://php.net/manual/es/security.da...-injection.php
Reply
#4

Quote:
Originally Posted by Parka
Посмотреть сообщение
Esto capas deberнa ser OFF-TOPIC xD

http://php.net/manual/es/security.da...-injection.php
Pero es PHP... yo me refiero al cуdigo del pawno y eso D:
Reply
#5

Nada que ver con la versiуn de MySQL que utilices, simplemente debes escapar todas las consultas. Las nuevas versiones de los plugins MySQL tienen parametros en la funciуn mysql_format para escapar automбticamente si usas "%e" en vez de "%s" o demбs. Para ser mбs especifico si te inyectan es por error tuyo en las consultas, no por la versiуn del plugin.

Un saludo.
Reply
#6

Para prevenir el SQL Injection, debes "escapar" lo que ingresa el usuario.

Como dijeron arriba, o usando %q en la funcion format.
Reply
#7

Quote:
Originally Posted by Skritwo
Посмотреть сообщение
Nada que ver con la versiуn de MySQL que utilices, simplemente debes escapar todas las consultas. Las nuevas versiones de los plugins MySQL tienen parametros en la funciуn mysql_format para escapar automбticamente si usas "%e" en vez de "%s" o demбs. Para ser mбs especifico si te inyectan es por error tuyo en las consultas, no por la versiуn del plugin.

Un saludo.
Gracias, entonces con la nueva versiуn ejemplo cuando conecta, la comprobaciуn si el usuario existe es asн.

Код:
	new
	    Query[80], string[30];
	format(Query, sizeof(Query), "SELECT * FROM `ev_cuentas` WHERE Nombre = '%s'", NombreJugador(playerid));
	mysql_function_query(TuberiaMYSQL, Query, true, "OnQueryFinish_", "ii", 2, playerid);
Ese Nombre = a %e? tendrнa que leer los parбmetros de dicha versiуn actualizada del MYSQL.
Reply
#8

Es con la funciуn mysql_format que puedes hacer eso.
Reply
#9

Funciona metiendo pedazos de query como entrada de texto, por ejemplo,supongamos que tenemos un sistema de login que hace lo siguiente:

pawn Код:
public OnDialogResponse() {
    if (dialogid == DIALOG_INGRESO) {
        mysql_query("SELECT * FROM usuarios WHERE name=%s AND password=%s", name, input)
    }
}
si el tipo se llama "pablo" escribe en la contraseсa "x OR 1=1", la query quedaria:
pawn Код:
SELECT * FROM usuarios WHERE name=pablo AND password=x OR 1=1
Entonces, te va a cargar tu cuenta. El "atacante" mete codigo sql desde el dialogo
Cuando se "escapa" se refiere a que mysql no lo interprete como query, si no que lo interprete como password="""x OR 1=1 """ y no cargaria la cuenta
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)