elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [Resuelto] [Pregunta]: ¿Como pasar UTF-8 datos PHP?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Resuelto] [Pregunta]: ¿Como pasar UTF-8 datos PHP?  (Leído 1,211 veces)
MiguelCanellas


Desconectado Desconectado

Mensajes: 626



Ver Perfil
[Resuelto] [Pregunta]: ¿Como pasar UTF-8 datos PHP?
« en: 7 Julio 2019, 21:29 »

Buenos días.

Mi problema es que al obtener datos que sean cadenas de una base de datos y estas lleven un acento por ejemplo.. "información" me va a salir cualquier cosa cuando lo quiera imprimir con php sería algo como.. "informaci?on".
Ya busque en una pagina web donde pareciera que el problema radica en la función que uso para limpiar los datos y luego guardarlos en la base de datos.

Por ejemplo:


Código
  1. $dato = 'información':
  2. $dato = limpiar_dato($dato);
  3.  
  4. Guardar_Registro($dato); // La función creara un nuevo registro en la base de datos con esta cadena como dato.

Esta es mi función:

Código
  1. function Limpiar_Dato($dato)
  2. {
  3. $dato = htmlspecialchars($dato);
  4. $dato = trim($dato);
  5. $dato = stripslashes($dato);
  6.  
  7. return $dato;
  8. }

Debería convertir el dato en UTF-8 antes de guardarlo en la base de datos según lo que pude entender. Decian que debía buscar una linea "htmlentities" pero mi función siempre fue así ya que aprendí a programar php de un curso y usaba esta función el instructor.

Código
  1. $string = htmlentities($string); // Esto la linea se esparaba que tuviera la función
  2.  
  3. // para poder convertir así...
  4. $dato = htmlentities($dato, ENT_QUOTES,'UTF-8');

La función del post que vi sería así de completa

Código
  1. function limpiarString($string) //función para limpiar strings
  2. {
  3.   $string = strip_tags($string);
  4.   $string = htmlentities($string);
  5.  
  6.   return stripslashes($string);  
  7. }
  8.  

Esperaba que me digan principalmente si sólo debería agregar la linea htmlentities a mi función o cual es la mas segura de las dos. Gracias!


« Última modificación: 24 Septiembre 2019, 11:47 por #!drvy » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.562



Ver Perfil WWW
Re: [Pregunta]: ¿Como pasar UTF-8 datos PHP?
« Respuesta #1 en: 10 Julio 2019, 17:41 »

Lo ideal es resolver eso en la raíz: usar encoding UTF-8 en todos lados.

Dicho esto, mirate utf8_encode y utf8_decode.

Saludos


En línea

WHK
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.329


The Hacktivism is not a crime


Ver Perfil WWW
Re: [Pregunta]: ¿Como pasar UTF-8 datos PHP?
« Respuesta #2 en: 19 Julio 2019, 05:51 »

Mucho ojo, en la base de datos jamás se deben guardar los textos escapados en htmlentities, no solo tendrás problemas de inyección sql sino también de usabilidad, especialmente cuando quieras sacar valores hacia datos de tipo json, renderizar en mobile, etc.

htmlspecialchars se debe utilizar unicamente cuando vas a expulsar contenido html en la pagina web, no para guardar. También te recomiendo eliminar la eliminación de backslashes porque eso también provoca vulnerabilidades, si tu servidor añade slashes a tus peticiones es porque estás usando una versión muy antigua de php (que ya no está soportada).

No has probado utilizar codeigniter para evitar este tipo de problemas?

Saludos.
En línea

Telegram: @WHK102 - Semáforo Epidemiologico Chile
MiguelCanellas


Desconectado Desconectado

Mensajes: 626



Ver Perfil
Re: [Pregunta]: ¿Como pasar UTF-8 datos PHP?
« Respuesta #3 en: 23 Julio 2019, 08:43 »

Uh! :O la función de Limpiar_Dato la saque de un curso donde aprendí sobre PHP me podrías decir cual podría ser una buena función para limpiar datos o la que usas vos para tus proyectos porque la verdad mucho no entiendo...

Te agradezco desde ya!
ahora reviso que es codeigniter
« Última modificación: 23 Julio 2019, 08:46 por MiguelCanellas » En línea

WHK
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.329


The Hacktivism is not a crime


Ver Perfil WWW
Re: [Pregunta]: ¿Como pasar UTF-8 datos PHP?
« Respuesta #4 en: 23 Julio 2019, 20:58 »

Depende a que te refieras con "limpiar", debes ser mas especifico, cada función de php se utiliza en casos muy particulares, por ejemplo, cada ves que necesites hacer una consulta a la base de datos debes utilizar mysql_real_escape_string() , cuando vas a expulsar contenido html en el sitio web debes utilizar htmlspecialchars(), cuando uses contenido de tipo json o javascript a traves de las cabeceras http no debes utilizar escapes, debes utilizar arrays multidimensionales y transformarlos a objetos json o javascript, para eso existe la función json_encode().

Saludos.
En línea

Telegram: @WHK102 - Semáforo Epidemiologico Chile
MiguelCanellas


Desconectado Desconectado

Mensajes: 626



Ver Perfil
Re: [Pregunta]: ¿Como pasar UTF-8 datos PHP?
« Respuesta #5 en: 24 Julio 2019, 03:18 »

Digamos siempre lo que hago es, tengo un formulario con un input de tipo texto donde el usuario podría enviar un texto cualquiera, correcto... Lo que yo hago con "Limpiar_Dato" es para evitar inyecciones SQL al mover la cadena o dato enviado por el usuario a la base de datos...

Pero parece todo más complicado que eso por lo que veo...  :(
En línea

WHK
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.329


The Hacktivism is not a crime


Ver Perfil WWW
Re: [Pregunta]: ¿Como pasar UTF-8 datos PHP?
« Respuesta #6 en: 24 Julio 2019, 07:10 »

Pues, cada función te protege de cada vulnerabilidad por separado, si juntas filtros en lugares donde no deben ir podrías causar vulnerabilidades.

Para evitar la inyección sql debes utilizar mysql_real_escape_string() en cada parametro que vayas a escribir en tu consulta sql, estos valores siempre deben ir encerrados en comillas dobles.

Saludos.
En línea

Telegram: @WHK102 - Semáforo Epidemiologico Chile
MiguelCanellas


Desconectado Desconectado

Mensajes: 626



Ver Perfil
Re: [Pregunta]: ¿Como pasar UTF-8 datos PHP?
« Respuesta #7 en: 24 Julio 2019, 09:56 »

La verdad se me hizo un choclo todo esto ahora jeje... Es decir las vulnerabilidades que existen de injecciones SQL serían 3? ¿Las que mencionaste anteriormente?
consulta base de datos, expulsar contenido html y a través de las cabeceras http?

La primera la entendí..
La segunda de expulsar contenido html sería algo con ajax que al hacer una petición al servidor inserto contenido html... ¿Tendría algo que ver con eso?
Luego lo de las cabeceras no me queda muy en claro la verdad..

Te doy las gracias por la paciencia que me estas teniendo, soy un poco duro para entender  ;D
En línea

WHK
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.329


The Hacktivism is not a crime


Ver Perfil WWW
Re: [Pregunta]: ¿Como pasar UTF-8 datos PHP?
« Respuesta #8 en: 25 Julio 2019, 00:20 »

Pues no hay uno ni tres, hay muchos: https://nvd.nist.gov/vuln/categories/cwe-layout , comienza con el cwe-19, pero de todas maneras, para no hacer esto tan extenso, solo limita a utilizar las funciones de php como corresponden y ya. PHP fue construido con todas sus funciones preparadas para evitar ciertos tipos de vulnerabilidades al desarrollar, puedes darle un vistazo a esto:

https://php.net/manual/es/security.php

Saludos.
En línea

Telegram: @WHK102 - Semáforo Epidemiologico Chile
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines