Páginas: 1 [2] 3
|
 |
|
Autor
|
Tema: Falla en el mod Seo4SMF para SMF (Leído 4763 veces)
|
|
|
|
|
|
WHK
|
wtf con tu spanglish xD jajaja y eso que hize un esfuerzo para tratar de explicar todo con la menor cantidad de palabras posibles jajaja. La solución y futuro parche o versión desatendida XD la estamos viendo con ing_amc ya que varias personas me han pedido una solución, mientras tanto para evitar la sql inyección en seo4smf-redirect.php hize estas modificaciones: // Pasamos a integer para evitar procesar datos no solicitados $topic = (int)$_GET['t']; $board = (int)$_GET['b']; $user = (int)$_GET['u']; $tpage = (int)$_GET['p']; // Filtramos solo carácteres válidos por SMF con expresiones regulares $other = preg_replace('|[^a-z0-9_=,;/\-.]|i', '', $_GET['o']); $action = preg_replace('|[^a-z0-9_=,;/\-.]|i', '', $_GET['a']); $param = preg_replace('|[^a-z0-9_=,;/\-.]|i', '', $_GET['param']); Deben haber otras páginas en que puedas inyectar código sql debo verlo todabía, falta muchisimo por revisar pero entre los dos lo terminamos luego. Alguien me preguntó por privado si estaba bién poner (int) directamente en la query del mysql y la verdad es mejor no hacerlo ya que antes de eso hay un if que verifica si hay contenido para procesar y si alguien ingresa letras o algo que no sea numérico lo pasará como válido y procesará la query incompleta causando un error de sintaxis asi que por eso es mas seguro ponerlo en la declaración de arriba para anticiparse. La expresión regular hace posible que puedas ingresar solo números, letras y los simbolos "_=,;/-." para que puedan ser procesados los links sin tener problemas de tener que procesar algo inesperado en alguna parte del script. Con esto ya no necesitamos modificar las queryes de la consulta a la base de datos pero de todas formas lo haremos mañana para continuar con el parche, también queda ver todas las demás fallas pero eso lo hacemos de volada  Hasta mañana.
|
|
|
|
« Última modificación: 13 Enero 2009, 07:45 por WHK »
|
En línea
|
|
|
|
berz3k
Colaborador
Desconectado
Mensajes: 1.014
|
XDDD ese Spanglish r0x XDDD
-berz3k.
|
|
|
|
|
En línea
|
|
|
|
|
aristides_03
|
bueno si hay una forma de ayudar dispongo de todo por que el seo es una gran utilidad para smf y es una gran las tima que el creador dejo abandonado su obra 
|
|
|
|
|
En línea
|
|
|
|
|
WHK
|
Acá una función que hize para verificar el acceso a la visualización de títulos de temas o boards (==) function seo_verifica_permisos($id, $tipo){ global $user_info, $db_prefix; if(!$id = (int)$id){ return false; } if($user_info['is_admin'] == '1'){ return true; // Si es administrador entonces tiene permisos por defecto. } if($tipo == 'board'){ // Procesa Board if($request = @db_query(" SELECT memberGroups FROM {$db_prefix}boards WHERE ID_BOARD = {$id} LIMIT 1", __FILE__, __LINE__)){ if($row = @mysql_fetch_assoc($request)){ mysql_free_result($request); } } if(!$permisos = @explode(',', $row['memberGroups'])){ if(!$permisos = (int)$row['memberGroups']){ // Hay permiso solo para un tipo de usuario return false; // No hay permisos preestablecidos } } foreach($permisos as $valor){ if($valor == $user_info['groups'][0]){ return true; // Tiene permisos } } return false; // No tiene permisos }elseif($tipo == 'topic'){ if($request = @db_query(" SELECT ID_BOARD FROM {$db_prefix}topics WHERE ID_TOPIC = {$id} LIMIT 1", __FILE__, __LINE__)){ if($row = @mysql_fetch_assoc($request)){ mysql_free_result($request); } } if(seo_verifica_permisos((int)$row['ID_BOARD'], 'board')){ return true; // Tiene permisos }else{ return false; // No tiene permisos } }else{ return false; // No hay tipos para procesar } }Entre muchisimos cambios para evitar una multitud de fallas que no habia contemplado pero por el camino fuí viendo y parchando al mismo tiempo, en algunos casos algunas funciones retornan y otros no ya que en algunos casos es necesario mostrar retornos válidos y en otros casos no, no hize un texto para describir todos los cambios o hubiese quedado mas grande que el mismo script. Este parche parcha todas las fallas antes mencionadas y mas. Si alguien utiliza este mod modificado por mano propia tendrá que volver a crear esos cambios. Este parche consta de 3 archivos solamente: - Themes/{$THEME}/Seo4SMFAdmin.template.php
- Sources/Seo4SMFAdmin.php
- seo4smf-redirect.php
Los archivos a reemplazar están acá, en la primera linea de cada archivo está la localización.
Dudas, sugerencias, propuesas, reclamos, demandas?¿?¿? Si quieres ver específicamente los cambios puedes utilizar el comando diff en linux o busquen el programa windiff de windows.
|
|
|
|
« Última modificación: 16 Enero 2009, 05:52 por WHK »
|
En línea
|
|
|
|
|
aristides_03
|
hey felicidades y que bueno que compartas el parche ya que el seo es una gran utilidad en los foros de smf y esperamos que salga tambien para la versión 2..smf en que falta mucho seria un agrado y bueno si necesitan ayuda estoy dispuesto en ayudar y asi aprendemos todo que ese es el objetivo de la vida
|
|
|
|
|
En línea
|
|
|
|
|
sirdarckcat
|
WHK, si sabes que se puede hacer todo ese codigo de permisos en una query a SQL? consumes menos recursos.. ve el parche que puse en el foro de lo de privado-privado
Saludos!!
|
|
|
|
|
En línea
|
|
|
|
Nakp
Tentado a ser
Colaborador
Desconectado
Mensajes: 4.444
Perfect roundness ñ_ñ
|
WHK, si sabes que se puede hacer todo ese codigo de permisos en una query a SQL? consumes menos recursos.. ve el parche que puse en el foro de lo de privado-privado
Saludos!!
eso me dijo cuando lo descubrió xD "sdc hace modificando un par de lineas lo que yo haría creando una funcion para verificar permisos..." @sdc: y los parches aplicados anteriormente? están el foro privado-privado? sería bueno que los incluyan todos 
|
|
|
|
|
En línea
|
|
|
|
|
WHK
|
WHK, si sabes que se puede hacer todo ese codigo de permisos en una query a SQL? consumes menos recursos.. ve el parche que puse en el foro de lo de privado-privado Si me acordé y eso fue lo primero que hize en el parche pero después me arrepentí porque el tuyo solo indica si el foro es público entonces se muestra y si es privado no se muestra pero.. que pasa si yo tengo permisos para ver foros privados y accedo? se verá privado/privado y la idea en esa función que hice fue que cada usuario pueda ver los temas que le permiten ver, si tu puedes ver solo 2 foros privados de 3 en total solo podrás ver esos dos, esa es la idea.. ajustarse un poco a las reglas de smf ahora que alex lo quiera así para evitar el copy paste de links es otra cosa 
|
|
|
|
|
En línea
|
|
|
|
дٳŦ٭
GNU/Linux Infrastructure Specialist
Desconectado
Mensajes: 5.047
Mtz De C.
|
 thanks
|
|
|
|
|
En línea
|
Con sangre andaluza 
|
|
|
|
sirdarckcat
|
mmmm fuera de que eso tambien se hace en una sola linea, no estoy de acuerdo en que se muestren topics no-publicos... independientemente de su tienes permiso o no de ver el foro, solo se deberian de redirigir temas que son publicos, por el simple motivo de que si no se hace asi, que tal que alguien con privilegios, manda un MP con un enlace a un tema privado... seo4smf va a cambiar la URL por la del tema en privado..
|
|
|
|
|
En línea
|
|
|
|
mer77
Desconectado
Mensajes: 3
|
Hola, muchisimas gracias por compartir el patch y pido disculpas por revivir este tema. Mi pregunta es muy sencilla, en algunos foros smf luego de aplicar el patch se encuentran errores como estos: Notice: Undefined index: t in /home/exkanka/public_html/seo4smf-redirect.php on line 7
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'exkanka'@'localhost' (using password: NO) in /home/exkanka/public_html/seo4smf-redirect.php on line 7
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/exkanka/public_html/seo4smf-redirect.php on line 7
Notice: Undefined index: b in /home/exkanka/public_html/seo4smf-redirect.php on line 8
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'exkanka'@'localhost' (using password: NO) in /home/exkanka/public_html/seo4smf-redirect.php on line 8
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/exkanka/public_html/seo4smf-redirect.php on line 8
Notice: Undefined index: o in /home/exkanka/public_html/seo4smf-redirect.php on line 9
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'exkanka'@'localhost' (using password: NO) in /home/exkanka/public_html/seo4smf-redirect.php on line 9
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/exkanka/public_html/seo4smf-redirect.php on line 9
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'exkanka'@'localhost' (using password: NO) in /home/exkanka/public_html/seo4smf-redirect.php on line 10
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/exkanka/public_html/seo4smf-redirect.php on line 10
Notice: Undefined index: p in /home/exkanka/public_html/seo4smf-redirect.php on line 11
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'exkanka'@'localhost' (using password: NO) in /home/exkanka/public_html/seo4smf-redirect.php on line 11
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/exkanka/public_html/seo4smf-redirect.php on line 11
Notice: Undefined index: a in /home/exkanka/public_html/seo4smf-redirect.php on line 12
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'exkanka'@'localhost' (using password: NO) in /home/exkanka/public_html/seo4smf-redirect.php on line 12
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/exkanka/public_html/seo4smf-redirect.php on line 12
Notice: Undefined index: param in /home/exkanka/public_html/seo4smf-redirect.php on line 13
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'exkanka'@'localhost' (using password: NO) in /home/exkanka/public_html/seo4smf-redirect.php on line 13
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/exkanka/public_html/seo4smf-redirect.php on line 13 Justamente las lineas de la 7 a la 13 corresponden a estas lineas de codigo: $topic = mysql_real_escape_string($_GET['t']); $board = mysql_real_escape_string($_GET['b']); $other = mysql_real_escape_string($_GET['o']); $user = mysql_real_escape_string($_GET['u']); $tpage = mysql_real_escape_string($_GET['p']); $action = mysql_real_escape_string($_GET['a']); $param = mysql_real_escape_string($_GET['param']); Dichos errores quedan registrados en el error_log del smf tambien. Que significa ese problema, tiene alguna solucion? representa algun peligro? saludos y gracias mer77.
|
|
|
|
|
En línea
|
|
|
|
Anon
Anonymous & Paranoid
Colaborador
Desconectado
Mensajes: 1.637
On Anonymous Mode!!
|
Pues es muy raro que te salga, este toma los datos de conexión desde el SMF, no deberia te dener problemas para conectarse a la base de datos.
Saludos
|
|
|
|
|
En línea
|
|
|
|
|
WHK
|
Access denied for user 'exkanka'@'localhost' Ese error es porque la conexión hacia la base de datos no ha sido realizada, revisa tu servidor o tus datos de conexión.
|
|
|
|
|
En línea
|
|
|
|
|
Páginas: 1 [2] 3
|
|
|
|