Publicidad

Autor Tema: [MUY IMPORTANTE] Fix anti-flood para comentarios (v2.3)  (Leído 20744 veces)

Desconectado kawapanga

  • Consiglieri
  • *
  • Mensajes: 2949
  • Power: 586
  • Sexo: Masculino
    • Ver Perfil
    • http://www.aportexaporte.com.ar/
    • Email
[MUY IMPORTANTE] Fix anti-flood para comentarios (v2.3)
« en: Enero 28, 2011, 04:39:35 am »
Hola gente!

Les dejo un FIX para todos aquellos que usen la v2.3 que es MUY MUY importante que lo apliquen ya mismo.

Este es un anti-flood para los comentarios....Lo que sucede, es que anda dando vueltas un código, para lanzar cientos y cientos de comentarios en pocos segundos (en webs de spirate).Esto era posible, por que spirate no tenía anti-flood en los comentarios y por que además, el archivo add_comment era el más desprotegido.
Dicho código javascript (maligno, por llamarlo de alguna manera), lo que hace es "simular" que uno fuera y agregase 1 comentario, pero además, con un código para enviar cientos a modo de "bombardeo".

Sin más, aquí les dejo la solución.

Instrucciones

* Deben reemplazar su add_comment.php (se encuentra en el directorio raiz) por el que les dejo aquí...(Adjunto)

* Deben reemplazar su Gallery (se encuentra en /Sources/Gallery.php) por el que les dejo aquí...(Adjunto)


Listo, es todo... y...



-----------------------------------------------------------------------------------------------------------------------------------------



Si quisieran hacerlo manualmente, sería:

Archivo add_comment.php (en la raíz del sitio)

Buscar por

Código: [Seleccionar]
require('Settings.php');

$conexion = mysql_connect($db_server, $db_user, $db_passwd) OR die("Error al procesar lo solicitado");
require("SSI.php");
mysql_select_db($db_name, $conexion) OR die("Error al procesar lo solicitado");

if($context['user']['id']=='')

Reemplazar por:

Código: [Seleccionar]
require('Settings.php');
$conexion = mysql_connect($db_server, $db_user, $db_passwd) OR die("Error al procesar lo solicitado");
require("SSI.php");
mysql_select_db($db_name, $conexion) OR die("Error al procesar lo solicitado");
$ladata   =   time();
$query2         =   mysql_query("SELECT fecha FROM {$db_prefix}comentarios WHERE id_user = {$ID_MEMBER} ORDER BY fecha DESC");
$obj2         =   mysql_fetch_object($query2);
$commet_tiempo   =   $obj2->fecha;
$tiempomax         =   $ladata - $commet_tiempo;
if($context['user']['id']=='')

Buscar por:

Código: [Seleccionar]
if($context['user']['id']==''){
echo'<b>Solo usuarios registrados pueden comentar</b>';
}

Agregar debajo
Código: [Seleccionar]
else
if($tiempomax < 60) {echo '<span style="color: red;" class="size12"><b>No puedes realizar tantos comentarios en tan poco tiempo</b></span>';}


---

Gallery.php (Sources/Gallery.php)

Buscar la función AddComment2

y reemplazarla por esta:

Código: [Seleccionar]
function AddComment2()
{
global $context, $scripturl, $db_prefix, $ID_MEMBER, $txt, $modSettings;
isAllowedTo('smfgallery_comment');
$comment = htmlspecialchars($_REQUEST['cuerpo_comment']);
$id = (int) $_REQUEST['id'];
if($id == '')
fatal_error($txt['gallery_error_no_pic_selected']);
    $dbresult = db_query("SELECT p.allowcomments FROM {$db_prefix}gallery_pic as p WHERE ID_PICTURE = $id LIMIT 1", __FILE__, __LINE__);
$row = mysql_fetch_assoc($dbresult);
mysql_free_result($dbresult);


   if($comment == '')
fatal_error($txt['gallery_error_no_comment'],false);
$commentdate = time();

if($_SESSION['last_add_gallery'] > time() - 60)
fatal_error('No puedes realizar tantas acciones en tan poco tiempo.');


db_query("INSERT INTO {$db_prefix}gallery_comment
(ID_MEMBER, comment, date, ID_PICTURE)
VALUES ($ID_MEMBER,'$comment', $commentdate,$id)", __FILE__, __LINE__);
$last = db_insert_id();
$inserted = !empty($last) ? true : false;

if(!$inserted)
fatal_error('Hubo un error al agregar el comentario, intentalo mas tarde');
else
$_SESSION['last_add_gallery'] = time();


if (isset($modSettings['shopVersion']))
db_query("UPDATE {$db_prefix}gallery_pic
SET commenttotal = commenttotal + 1 WHERE ID_PICTURE = $id LIMIT 1", __FILE__, __LINE__);
    redirectexit('' . $scripturl . '/?action=imagenes;sa=ver;id=' . $id);

}

Esto lo que hace, es que cada usuario, pueda hacer un comentario cada 1 minuto (es lo normal). Listo, ya con esto, estarían protegidos.
En ambos casos el numero "60" indica la cantidad de segundos...Recomiendo dejarlo en "60"...pero en configurable a gusto de ustedes.

Créditos:

Juans!
y Fivezone y J0n4thntub3 Por haber hecho el FIX

y a todo el staff, por ayudar
« última modificación: Enero 29, 2011, 09:57:20 pm por kawapanga »
Piribin pin pon

Desconectado beatlero18

  • Sr. Member
  • ****
  • Mensajes: 366
  • Power: 62
  • Sexo: Masculino
  • ¡Libérate!... (Ay que maricón sonó)
    • Ver Perfil
    • Macosfera
Re: [MUY IMPORTANTE] Fix anti-flood para comentarios (v2.3)
« Respuesta #1 en: Enero 28, 2011, 04:43:04 am »
Buenisimo, ahora mismo lo aplico +1 :hi:

Desconectado anferro

  • SPmaniaco
  • *******
  • Mensajes: 2691
  • Power: 70
  • Sexo: Masculino
    • Ver Perfil
    • Email
Re: [MUY IMPORTANTE] Fix anti-flood para comentarios (v2.3)
« Respuesta #2 en: Enero 28, 2011, 04:57:24 am »
Muy buen Fix  cada vez el script va quedando mas limpio !
Made in colombia papa!
Gana Dinero Rapido Facil y Efectivo!
@anferro007
Gana $ Con tus Tweet's

Se supone que aquí debo poner algo interesante xdgdfgdgljgdlfgjdff

Desconectado Traiciel

  • Inquilino de SP
  • ********
  • Mensajes: 3379
  • Power: -65531
  • Sexo: Femenino
  • Sin prisa, pero traicionando
    • Ver Perfil
    • software windows
Re: [MUY IMPORTANTE] Fix anti-flood para comentarios (v2.3)
« Respuesta #3 en: Enero 28, 2011, 05:06:36 am »
Excelente kawa, gracias por el fix! +1!

Desconectado the_george15

  • Hero Member
  • *****
  • Mensajes: 877
  • Power: 159
  • Sexo: Masculino
  • La mejor forma de aprender es en los errores
    • Ver Perfil
    • Worldposts
Re: [MUY IMPORTANTE] Fix anti-flood para comentarios (v2.3)
« Respuesta #4 en: Enero 28, 2011, 06:02:19 am »
exelente martin +1 :up:
Metas para 2011
<br /><br />

Desconectado lPc_lF4lN_Sp1r4t3r0

  • Soporte Oficial
  • *
  • Mensajes: 5453
  • Power: 604
  • Sexo: Masculino
  • Paradise city (8)
    • Ver Perfil
    • MatCin
    • Email
Re: [MUY IMPORTANTE] Fix anti-flood para comentarios (v2.3)
« Respuesta #5 en: Enero 28, 2011, 06:23:43 am »
Muy bueno +1 :hi::hi:

Desconectado StrikeR

  • Sr. Member
  • ****
  • Mensajes: 290
  • Power: 5
  • Sexo: Masculino
  • http://www.matinga.net
    • MSN Messenger - striker.cs@live.com.ar
    • Ver Perfil
    • Matinga
Re: [MUY IMPORTANTE] Fix anti-flood para comentarios (v2.3)
« Respuesta #6 en: Enero 28, 2011, 06:28:18 am »
gracias!!!!

Desconectado The_Pimp

  • Argentino
  • Moderador Global
  • *
  • Mensajes: 12089
  • Power: 20
  • Sexo: Masculino
  • Argentino
    • AOL Instant Messenger - Argentino
    • Yahoo Instant Messenger - Argentino
    • Ver Perfil
    • Argentino
    • Email
Re: [MUY IMPORTANTE] Fix anti-flood para comentarios (v2.3)
« Respuesta #7 en: Enero 28, 2011, 06:34:19 am »
Ese es mi admin y el foro que me gusta! gracias a todos los que realizaron el fix! :hi::hi:
"Los rumores son llevados por enemigos, extendidos por tontos y aceptados por ignorantes"

Desconectado arkonqn

  • Beta Tester
  • *
  • Mensajes: 1680
  • Power: 264
  • Sexo: Masculino
  • Gracias Spirate
    • Ver Perfil
    • Email
Re: [MUY IMPORTANTE] Fix anti-flood para comentarios (v2.3)
« Respuesta #8 en: Enero 28, 2011, 06:39:13 am »
Felicitaciones Juans, la verdad muy bueno, y Five cada día demuestra más q tiene grandes meritos para ser parte del staff.
 Gracias Kawita por el fix.

Desconectado hola.!

  • Sr. Member
  • ****
  • Mensajes: 334
  • Power: 19
    • Ver Perfil
Re: [MUY IMPORTANTE] Fix anti-flood para comentarios (v2.3)
« Respuesta #9 en: Enero 28, 2011, 07:30:09 am »
nada que ver no es ningun codigo maligno se eliminan dos archivo en el js que hace que se pueda comentar todas las veces quev quieras.. eso lo hace cada uno en su pagina.. lo hacen a proposito los admin de su web... para que lograr mas comentario en los post... no es ningun codigo maligino


esto lo que hacen eliminan estos dos archivos del js y listo:

Código: [Seleccionar]
$('#cajacomment').fadeOut('slow');
                                                $('#commentselect').fadeOut('slow');


de aca sale una nueva caja de comentario como la de casita web
« última modificación: Enero 28, 2011, 07:38:53 am por hola.! »

Desconectado 002

  • Project Manager
  • *
  • Mensajes: 3398
  • Power: 1002
  • Sexo: Masculino
  • Nada es verdad, Todo está permitido
    • Ver Perfil
    • TecnoBite
Re: [MUY IMPORTANTE] Fix anti-flood para comentarios (v2.3)
« Respuesta #10 en: Enero 28, 2011, 07:33:35 am »
che ne vez de

Código: [Seleccionar]
else
if($tiempomax < 60) {echo '<span style="color: red;" class="size12"><b>No puedes realizar tantos comentarios en tan poco tiempo</b></span>';}

no seria

Código: [Seleccionar]
elseif($tiempomax < 60) {echo '<span style="color: red;" class="size12"><b>No puedes realizar tantos comentarios en tan poco tiempo</b></span>';}

elseif() ?

Desconectado kawapanga

  • Consiglieri
  • *
  • Mensajes: 2949
  • Power: 586
  • Sexo: Masculino
    • Ver Perfil
    • http://www.aportexaporte.com.ar/
    • Email
Re: [MUY IMPORTANTE] Fix anti-flood para comentarios (v2.3)
« Respuesta #11 en: Enero 28, 2011, 07:36:38 am »
nada que ver no es ningun codigo maligno se eliminan dos archivo en el js que hace que se pueda comentar todas las veces quev quieras.. eso lo hace cada uno en su pagina.. lo hacen a proposito los admin de su web... para que lograr mas comentario en los post... no es ningun codigo maligino


esto lo que hacen eliminan estos dos archivos del js y listo:

Código: [Seleccionar]
$('#cajacomment').fadeOut('slow');
                                                $('#commentselect').fadeOut('slow');

No tiene nada que ver eso...(se lo que decis, pero nada tiene que ver)

Esto es un código java, lo tuve en mis manos, y lo probé...por eso estoy diciendo...


che ne vez de

Código: [Seleccionar]
else
if($tiempomax < 60) {echo '<span style="color: red;" class="size12"><b>No puedes realizar tantos comentarios en tan poco tiempo</b></span>';}

no seria

Código: [Seleccionar]
elseif($tiempomax < 60) {echo '<span style="color: red;" class="size12"><b>No puedes realizar tantos comentarios en tan poco tiempo</b></span>';}

elseif() ?

Es lo mismo..xD Saludos
Piribin pin pon

Desconectado hola.!

  • Sr. Member
  • ****
  • Mensajes: 334
  • Power: 19
    • Ver Perfil
Re: [MUY IMPORTANTE] Fix anti-flood para comentarios (v2.3)
« Respuesta #12 en: Enero 28, 2011, 07:44:17 am »
me olvides del mas uno disculpa

mas 1 gracias



« última modificación: Enero 28, 2011, 07:57:07 am por hola.! »

Desconectado a77acante

  • VIP
  • *
  • Mensajes: 828
  • Power: 107
  • Sexo: Masculino
  • Lo más Hermoso esta en lo simple de las cosas
    • Ver Perfil
    • Email
Re: [MUY IMPORTANTE] Fix anti-flood para comentarios (v2.3)
« Respuesta #13 en: Enero 28, 2011, 08:04:13 am »
gracias animal

Desconectado j0n4th4ntub3!®

  • unset($topos)
  • Project Manager
  • *
  • Mensajes: 4397
  • Power: 2054
  • Sexo: Masculino
  • /** @role: developer */
    • Ver Perfil
    • Email
Re: [MUY IMPORTANTE] Fix anti-flood para comentarios (v2.3)
« Respuesta #14 en: Enero 28, 2011, 08:08:47 am »
nada que ver no es ningun codigo maligno se eliminan dos archivo en el js que hace que se pueda comentar todas las veces quev quieras.. eso lo hace cada uno en su pagina.. lo hacen a proposito los admin de su web... para que lograr mas comentario en los post... no es ningun codigo maligino


esto lo que hacen eliminan estos dos archivos del js y listo:

Código: [Seleccionar]
$('#cajacomment').fadeOut('slow');
                                                $('#commentselect').fadeOut('slow');


de aca sale una nueva caja de comentario como la de casita web

No tiene nada que ver, de que archivos hablas? quizas habras querido decir lineas de codigo



abrir add_comment.php

buscar por:

mysql_query("SET NAMES 'utf8'");

agregar antes:


	
 if(
$_SESSION['last_add'] > time() - 10)
	
 die (
'0: No puedes realizar tantas acciones en tan poco tiempo');


buscar por:


VALUES 
($ID_TOPIC'$ID_BOARD''$ID_MEMBER','$comentario','$fecha')");



agregar despues:


	
$lastid mysql_insert_id($conexion);
	
	
	

	
$inserted = empty($lastid) ? false true;
	

	
if(
$inserted)
	
$_SESSION['last_add'] = time();
	
else
	
die(
'0: No se pudo agregar el comentario, intentalo mas tarde');





estaria de más extraer de la columna fecha, no creen? para ahorrarse consumo, sesiones...
« última modificación: Enero 28, 2011, 08:18:28 am por j0n4th4ntub3!® »
Cita de: shake
¡Vamos, somos Small Pirate, la puta que lo parió, no es poca cosa, somos mejores y tenemos que seguir!