Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal
Alan

[Fix Risus] Fuente de los BBCode

Recommended Posts

Hola, como verán recientemente hay un usuario que anda molestando con un error en la fuente de los BBcodes. El error consiste básicamente en que dicho BBcode carece de verificación, entonces se podía ingresar algunos carácteres HTML y poner una fuente gigante lo que no permitía navegar por los posts y al cliquear llevaba a una página, no representa un error grave en sí, por lo que no hay que alarmarse ya que sus datos personales y de hosting están seguros. Sin embargo puede ser muy molesto, por lo que es muy recomendado instalar este fix.

 

Instalación automática: Para solucionarlo suban la carpeta INC que subí AQUÍ en la raíz de su sitio y reemplacen los archivos y ya estará solucionado el error. 

Instalación manual: Si han modificado los archivos, pueden optar por instalarlo manualmente:

 

  1. Abran el archivo bbcode.inc.php ubicado en /inc/ext/bbcode.inc.php y busquen (está en la línea 10):
require_once 'JBBCode/validators/ImgValidator.php';

  Y abajo coloquen:

require_once 'JBBCode/validators/FontValidator.php';

Busquen:

 

        $imgValidator = new \JBBCode\validators\ImgValidator();

Y debajo coloquen:

        $fontValidator = new \JBBCode\validators\FontValidator();

Busquen:

            array('tag' => 'font', 'replace' => '<span style="font-family: {option}">{param}</span>', 'option' => true),

Y lo reemplazan por:

            array('tag' => 'font', 'replace' => '<span style="font-family: {option}">{param}</span>', 'option' => true, 'validOption' => $fontValidator),

2.  Crear un archivo con nombre FontValidator.php dentro de /inc/ext/JBBcode/validators/ con el siguiente contenido:

 

<?php

namespace JBBCode\validators;

require_once dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'InputValidator.php';

/**
 * Validador de fuentes para evitar kakeos
 *
 * @author Alan
 * @since Sep 2016
 */

class FontValidator implements \JBBCode\InputValidator {

    /**
     * Retorna true si $input es alfabético
     *
     * @param $input string a validar
     */
    public function validate($input) {
        return !!preg_match('/^[a-z0-9\s]+$/i', $input);
    }

}

Y ya debería funcionar, no digo que esto sea un fix oficial ya que lamentablemente ya no pertenezco al staff :( pero cuando Isidro lo vea podrá decidir que es lo que hace.

 

T9dXaMo.png

 

Saludos!

Editado por Rhuan
  • Me gusta 7

Compartir este post


Enlace al post
Compartir en otros sitios

esta muy bien que se arreglen estos problemas pero no deberían atacarse entre ustedes mismos... estaban tan confiados que no existía ese problema que usted mismo escribió algo tipo "si bla bla bla entonces que hackee la demo" osea yo me quedé como ¿es en serio? no debe haber ese egocentrismo de creer que todo esta perfecto... yo me asuste cuando escribí un comentario en la demo con el codigo que dejaron y funciono!! entonces si algo tan simple se pasa por alto, que puedo pensar del núcleo?? que es mas complejo... tambien me di cuenta que muchos dejan opiniones muy buenas y se llevan negativos o advertencias solo por no estar de acuerdo con el otro.. solo por expresarse y eso tambien esta muy mal...

Compartir este post


Enlace al post
Compartir en otros sitios
hace 22 minutos, suggeidy dijo:

esta muy bien que se arreglen estos problemas pero no deberían atacarse entre ustedes mismos... estaban tan confiados que no existía ese problema que usted mismo escribió algo tipo "si bla bla bla entonces que hackee la demo" osea yo me quedé como ¿es en serio? no debe haber ese egocentrismo de creer que todo esta perfecto... yo me asuste cuando escribí un comentario en la demo con el codigo que dejaron y funciono!! entonces si algo tan simple se pasa por alto, que puedo pensar del núcleo?? que es mas complejo... tambien me di cuenta que muchos dejan opiniones muy buenas y se llevan negativos o advertencias solo por no estar de acuerdo con el otro.. solo por expresarse y eso tambien esta muy mal...

 

No es que seamos egocéntricos, pero es la verdad si tanto critican, que hackeen la demo y así sabremos que vulnerabilidad tiene, una web con muchos mods instalados nunca es de confiar, ademas no es que el script sea perfecto, nada lo es perfecto y el problema es que no sabemos de todas las posibles vulnerabilidades que puede llegar a tener el script y por eso se pide que se hackee la demo, para conocer que es lo que se tiene que arreglar, ¿te asustaste porque en la demo funciona el comentario?, que esperabas si hace menos de 50 minutos se publico el fix, ademas que eso no es hackear. 

 

Editado por ayuda031
  • Me gusta 1

Compartir este post


Enlace al post
Compartir en otros sitios
hace 4 minutos, KillerJohn dijo:

Genio Total! muchas gracias ;)

De nada! Hice una actualización en FontValidator.php, si ya lo instalaste reemplaza el archivo por lo que está en el post

hace 21 minutos, suggeidy dijo:

esta muy bien que se arreglen estos problemas pero no deberían atacarse entre ustedes mismos... estaban tan confiados que no existía ese problema que usted mismo escribió algo tipo "si bla bla bla entonces que hackee la demo" osea yo me quedé como ¿es en serio? no debe haber ese egocentrismo de creer que todo esta perfecto... yo me asuste cuando escribí un comentario en la demo con el codigo que dejaron y funciono!! entonces si algo tan simple se pasa por alto, que puedo pensar del núcleo?? que es mas complejo... tambien me di cuenta que muchos dejan opiniones muy buenas y se llevan negativos o advertencias solo por no estar de acuerdo con el otro.. solo por expresarse y eso tambien esta muy mal...

Hace casi 4 años que no me conectaba, no estoy muy al tanto de las modificaciones que han hecho ni tengo contacto con Isidro tampoco

 

hace 24 minutos, MagicInventor dijo:

ñee me superaste, recién lo acabo de hacer pero con regex... 

 

PD: ctype_alpha no soporta espacios, fuentes con nombres con espacios no van a funcionar.

Ni sabía que había fuentes con espacios, ya lo actualicé gg

hace 4 minutos, ayuda031 dijo:

 

No es que seamos egocéntricos, pero es la verdad si tanto critican, que hackeen la demo y así sabremos que vulnerabilidad tiene, una web con muchos mods instalados nunca es de confiar, ademas no es que el script sea perfecto, nada lo es perfecto y el problema es que no sabemos de todas las posibles vulnerabilidades que puede llegar a tener el script y por eso se pide que se hackee la demo, para conocer que es lo que se tiene que arreglar, ¿te asustaste porque en la demo funciona el comentario?, que esperabas si hace menos de 50 minutos se publico el fix, ademas que eso no es hackear. 

 

Exacto! Además de que cuando yo me fui todavía ni habían implementado ese sistema de JBBCode, recién ahora que descargué el script nuevamente pude ver que le han metido muchas cosas nuevas 

Compartir este post


Enlace al post
Compartir en otros sitios
hace 19 minutos, ayuda031 dijo:

 

¿te asustaste porque en la demo funciona el comentario?, que esperabas si hace menos de 50 minutos se publico el fix, ademas que eso no es hackear. 

 

yo no he dicho que es hackeo... yo dije que era un bug en mi comentario donde estaba el codigo, vez?? justo a esto me refería con egocentrismo... se creen mucho por saber un poco mas...  yo me registre ayer para aprender!! y ya me dan ganas de irme a otra parte... 

Compartir este post


Enlace al post
Compartir en otros sitios
hace 2 horas, suggeidy dijo:

esta muy bien que se arreglen estos problemas pero no deberían atacarse entre ustedes mismos... estaban tan confiados que no existía ese problema que usted mismo escribió algo tipo "si bla bla bla entonces que hackee la demo" osea yo me quedé como ¿es en serio? no debe haber ese egocentrismo de creer que todo esta perfecto... yo me asuste cuando escribí un comentario en la demo con el codigo que dejaron y funciono!! entonces si algo tan simple se pasa por alto, que puedo pensar del núcleo?? que es mas complejo... tambien me di cuenta que muchos dejan opiniones muy buenas y se llevan negativos o advertencias solo por no estar de acuerdo con el otro.. solo por expresarse y eso tambien esta muy mal...

Aquí nadie se ataca entre nadie... Es magic el que ataca a todos 

 

yao_ming_meme_by_lecatinga-d4kpe13.jpg

Compartir este post


Enlace al post
Compartir en otros sitios
hace 1 hora, suggeidy dijo:

yo no he dicho que es hackeo... yo dije que era un bug en mi comentario donde estaba el codigo, vez?? justo a esto me refería con egocentrismo... se creen mucho por saber un poco mas...  yo me registre ayer para aprender!! y ya me dan ganas de irme a otra parte... 

No creemos mas? nunca dije que nos creemos mas, quieren exigirle algo a un script que es gratuito y que sale a flote con la ayuda de la comunidad, solo digo que si el script es vulnerable no lo sabemos hasta que se lo pruebe.

Si quieres irte vete, que le puedo decir a alguien que prefiere tachar de egocéntrico a los demás y no tratar de ver las cosas del lado del otro, yo entiendo que tienes miedo a que alguien venga y hackee tu web, pero ninguna web esta libre de eso, a risus se le hace las actualizaciones de seguridad como es debido pero Isidro no es perfecto y siempre se le puede escapar algo y para eso está la comunidad, para detectar este tipos de errores y solucionarlo, y ahí viene la mano de que si hackeas la demo recién sabremos que problema tiene el script o si realmente el problema es del script, no decimos "hackea la demo" solo porque seamos egocéntricos, sino que se ha dado el caso de gente que daña su web a propósito solo para darle mala fama al script, o webs que se vuelven vulnerables por el exceso de modificaciones que tienen.... 

  • Me gusta 1

Compartir este post


Enlace al post
Compartir en otros sitios
hace 1 hora, MagicInventor dijo:

Una cosa más también agregale un A-Z al regex porque el editor bbcode las tiene por defecto con letras en mayúsculas.

Tiene una "i" después del delimitador de patrón, eso quiere decir que admite tanto mayúsculas como minúsculas.

Compartir este post


Enlace al post
Compartir en otros sitios

Registra una cuenta o conéctate para comentar

Debes ser un miembro de la comunidad para dejar un comentario

Crear una cuenta

Regístrate en nuestra comunidad. ¡Es fácil!

Registrar una cuenta nueva

Iniciar Sesión

¿Ya tienes cuenta? Conéctate aquí.

Iniciar Sesión

  • Similar Content

    • Por Miguel92
      Problemas al comentar y/o enviar mensaje 
      después de haber agregado el wysibb
       
      Si actualizaste y te has topado con este problema, bueno te traigo la solución.
       
      [1] SOLUCIONADO: No puedo comentar
      Ir a default/js/funciones.js y buscan
          // NUEVO COMENTARIO     nuevo: function(mostrar_resp, comentarionum){         // EVITAR FLOOD         $('#btnsComment').attr({'disabled':'disabled'});         //         var textarea = $('#body_comm');         var text = textarea.val(); y en la parte que dice .val(); lo cambian por .bbcode();
              var text = textarea.bbcode();  
      [2] SOLUCIONADO: No puedo previsualizar el comentario
      Ir a default/js/funciones.js y buscan
      // VISTA PREVIA DEL COMENTARIO     preview: function(id, type){         var textarea = (type == 'new') ? $('#' + id) : $('#edit-comment-' + id);         var text = textarea.val(); lo mismo que el paso anterior
              var text = textarea.bbcode(); 16/05/2018
      Con la nueva actualización del script phpost_1.3.0.000 tiene este problema, en el momento que lo estaba haciendo me había funcionado de la manera que esta publicado..luego tuve el error de no poder editar el comentario y la solución fue revertir este paso y de esa manera edita y previsualiza
       
       
      SOLUCIONADO: No puedo previsualizar el mensaje
      Ir a default/js/funciones.js y buscan
          // VISTA PREVIA DEL MENSAJE     previewms: function(id, type){         var textarea = (type == 'new') ? $('#' + id) : $('#edit-comment-' + id);         var text = textarea.val(); lo mismo que el paso anterior
              var text = textarea.bbcode();  
      [3] SOLUCIONADO: No puedo enviar mensaje desde "Mensajes"
      Ir a default/js/acciones.js y buscan
          // RESPONDER     responder: function(mp_id){         this.vars['mp_id'] = $('#mp_id').val();         this.vars['mp_body'] = encodeURIComponent($('#respuesta').val()); // Fix: 14/12/2014 - 1.1.000.9 lo mismo que el paso anterior  .val(); lo cambian por .bbcode();
              this.vars['mp_body'] = encodeURIComponent($('#respuesta').bbcode()); // Fix: 14/12/2014 - 1.1.000.9  
      En el caso de encontrar más lo ire colocando!
    • Por Tronlar
      Hola a [email protected],os dejo como hacer funcionar el sistema de captcha en las V5,V6,lo acabo de probar y funciona bien.
       
       
      Ejecutar esta consulta:
      ALTER TABLE `w_configuracion` ADD `pkey` VARCHAR(55) NOT NULL AFTER `offline_message`, ADD `skey` VARCHAR(55) NOT NULL AFTER `pkey`;  
      En c.admin.php --> inc/class/c.admin.php
       
      Buscar:
      'newr' => empty($_POST['newr']) ? 0 : 1);
      Cambiar por:
      'newr' => empty($_POST['newr']) ? 0 : 1, 'pkey' => $tsCore->setSecure($_POST['pkey']), 'skey' => $tsCore->setSecure($_POST['skey']),  
       
      Buscar:
      '\', `offline_message` = \'' . $c['offline_message'] .  
      Añadir al lado:
      '\', `pkey` = \'' . $c['pkey'] . '\', `skey` = \'' . $c['skey'] .
      Tiene que quedar así:
      '\', `offline_message` = \'' . $c['offline_message'] . '\', `pkey` = \'' . $c['pkey'] . '\', `skey` = \'' . $c['skey'] .  
       

      En c.registro.php --> inc/class/c.registro.php
       
      Buscar:
      'user_captacha_challenge' => $_POST['recaptcha_challenge_field'], 'user_captacha_response' => $_POST['recaptcha_response_field'],  
      Cambiar por:
      'user_captcha' => $_POST['g-recaptcha-response'],  
      Buscar:
      'captacha' => 'El código es incorrecto'
      Cambiar por:
      'captcha' => 'Validación incorrecta',  
       
      Buscar:
      // CAPTACHA require(TS_EXTRA . 'recaptchalib.php'); $robot = recaptcha_check_answer(RC_PIK,$_SERVER["REMOTE_ADDR"],$tsData['user_captacha_challenge'],$tsData['user_captacha_response']); if(!$robot->is_valid) return 'recaptcha: El código es incorrecto.';

      Cambiar por:        
      /** reCAPTCHA **/ $recaptcha = 'https://www.google.com/recaptcha/api/siteverify?secret=' . $tsCore->settings['skey'] . '&response=' . $tsData['user_captcha'] . '&remoteip=' . $tsCore->getIP(); // Obtener respuesta $response = file_get_contents($recaptcha); // Extraer resultado $ext1 = explode('"success":', $response); $ext2 = explode(',', $ext1[1]); // Comprobar resultado $valid = trim($ext2[0]); // Devolver respuesta si es incorrecta if ($valid == 'false') { return 'recaptcha: No hemos podido validar tu humanidad'; }  
       
      registro.js --> default/js/registro.js
      registro.js --> V6/js/registro.js
       
      Buscar:
      /* reCAPTCHA */ case 'recaptcha_challenge_field': return true; break; case 'recaptcha_response_field': //Si ya paso por aca y no hubieron cambios, devuelvo el mismo status if(!force_check && this.datos[campo] === value && this.datos['recaptcha_challenge_field'] == $('#RegistroForm .pasoDos #recaptcha_challenge_field').val()) if(this.datos_status[campo]=='empty') return no_empty ? this.show_status(el, this.datos_status[campo], this.datos_text[campo]) : this.hide_status(el, this.datos_status[campo], this.datos_text[campo]); else return this.show_status(el, this.datos_status[campo], this.datos_text[campo]); //Almaceno el dato this.datos[campo] = value; this.datos['recaptcha_challenge_field'] = $('#RegistroForm .pasoDos #recaptcha_challenge_field').val(); //!empty if(empty(value)){ var status = 'empty'; var text = 'El campo es requerido'; if(no_empty) return this.show_status(el, status, text); else return this.hide_status(el, status, text); } return registro.show_status(el, 'ok', 'OK'); break; } },  

      Cambiar por:    
      /* reCAPTCHA */ case 'g-recaptcha-response': this.datos[campo] = value; //!empty if (!value) { return this.show_status($('#RegistroForm .g-recaptcha'), 'empty', 'Demuestra que eres humano'); } return registro.show_status($('#RegistroForm .g-recaptcha'), 'ok', 'OK'); break; } },  
       
      Buscar:
      case 'recaptcha': //reCAPTCHA registro.change_paso(2, true); registro.show_status($('#RegistroForm #recaptcha_response_field'), 'error', h.substring(strpos(h, ':')+2)); break;
         
      Cambiar por:
      case 'recaptcha': //reCAPTCHA registro.change_paso(2, true); registro.show_status($('#RegistroForm .g-recaptcha'), 'error', h.substring(strpos(h, ':') + 2)); break;

      t.registro.tpl --> default/templates/t.registro.tpl
      t.registro.tpl --> V6/templates/t.registro.tpl    
          
       Buscar:
      <div class="form-line"> <label for="recaptcha_response_field">Ingresa el código de la imagen</label> <div id="recaptcha_ajax"> <div id="recaptcha_image"></div> <input type="text" id="recaptcha_response_field" name="recaptcha_response_field" /> </div> <div class="help recaptcha" id="nubex"><span id="puy"></span><span><em></em></span></div> </div>  

      Cambiar por:
      <div class="form-line"> <label>Confirme humanidad:</label> <div class="g-recaptcha" data-sitekey="{$tsConfig.pkey}"></div> <div class="help"><span><em></em></span></div> </div>
         
      Buscar:
      <script type="text/javascript"> // $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ //Seteo el pais seleccionado //registro.datos['pais']='MX'; //registro.datos_status['pais']='ok'; //registro.datos_text['pais']='OK'; // registro.change_paso(1); //Genero el autocomplete de la ciudad /*$('#RegistroForm .pasoDos #ciudad').autocomplete('/registro-geo.php', { minChars: 2, width: 298 }).result(function(event, data, formatted){ registro.datos['ciudad_id'] = (data) ? data[1] : ''; registro.datos['ciudad_text'] = (data) ? data[0].toLowerCase() : ''; if(data) $('#RegistroForm .pasoDos #terminos').focus(); });*/ mydialog.procesando_fin(); }); //Load recaptcha $.getScript("http://www.google.com/recaptcha/api/js/recaptcha_ajax.js", function(){ Recaptcha.create('6LcXvL0SAAAAAPJkBrro96lnXGZ56TBRExEmVM3L', 'recaptcha_ajax', { theme:'custom', lang:'es', tabindex:'13', custom_theme_widget: 'recaptcha_ajax', callback: function(){ $('#recaptcha_response_field').blur(function(){ registro.blur(this); }).focus(function(){ registro.focus(this); }).attr('title', 'Ingrese el código de la imagen'); } }); }); </script>

      Cambiar por:       
      <script type="text/javascript"> // $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ //Seteo el pais seleccionado //registro.datos['pais']='MX'; //registro.datos_status['pais']='ok'; //registro.datos_text['pais']='OK'; // registro.change_paso(1); //Genero el autocomplete de la ciudad /*$('#RegistroForm .pasoDos #ciudad').autocomplete('/registro-geo.php', { minChars: 2, width: 298 }).result(function(event, data, formatted){ registro.datos['ciudad_id'] = (data) ? data[1] : ''; registro.datos['ciudad_text'] = (data) ? data[0].toLowerCase() : ''; if(data) $('#RegistroForm .pasoDos #terminos').focus(); });*/ mydialog.procesando_fin(); }); </script> <script src="https://www.google.com/recaptcha/api.js" async defer></script> <script type="text/javascript"> $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ registro.change_paso(1); mydialog.procesando_fin(); }); </script>

       m.admin_configs.tpl     --> default/templates/admin_mods/m.admin_configs.tpl            
       m.admin_configs.tpl     --> V6/templates/admin_mods/m.admin_configs.tpl    
              
      Buscar:   
      <dl> <dt><label for="ai_xat">Xat ID:</label><br /><span>Por defecto puedes agregar un chat de <a href="http://xat.com">Xat</a> para tu web, solo crea tu grupo he ingresa el nombre.</span></dt> <dd><input type="text" id="ai_xat" name="xat" maxlength="20" value="{$tsConfig.xat_id}" /> </dd> </dl> <hr />  

      Añadir debajo:
      <dl> <dt> <label for="pkey">reCaptcha pública</label> <br /><span>Clave pública de <a href="https://www.google.com/recaptcha/admin">reCatpcha</a>.</span> </dt> <dd> <input type="text" id="pkey" name="pkey" value="{$tsConfig.pkey}" /> </dd> </dl> <dl> <dt> <label for="skey">reCaptcha secreta</label> <br /><span>Clave privada de <a href="https://www.google.com/recaptcha/admin">reCatpcha</a>.</span> </dt> <dd> <input type="text" id="skey" name="skey" value="{$tsConfig.skey}" /> </dd> </dl> <hr />  
       
       
      Y con eso ya la tienen funcionando,saludos.


       
       
       
       
       

              
           
       
  • Navegando Recientemente   0 miembros

    No registered users viewing this page.

  • Patrocinador



  • ×