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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  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 3,607 veces)
Leguim


Desconectado Desconectado

Mensajes: 719



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

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 am por #!drvy » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



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

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
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


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

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

Leguim


Desconectado Desconectado

Mensajes: 719



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

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 am por MiguelCanellas » En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


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

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

Leguim


Desconectado Desconectado

Mensajes: 719



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

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
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


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

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

Leguim


Desconectado Desconectado

Mensajes: 719



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

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
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


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

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Resuelto] [Pregunta]: Pasar dato de variable (JS) a una variable PHP
PHP
Leguim 5 3,352 Último mensaje 21 Junio 2019, 16:33 pm
por mchojrin
[Resuelto] [Pregunta]: ¿Como puedo pasar de html(); a eval();?
Desarrollo Web
Leguim 4 2,297 Último mensaje 21 Agosto 2019, 22:03 pm
por Leguim
[Resuelto] [Pregunta]: ¿Como usar getimagesize();?
PHP
Leguim 2 1,762 Último mensaje 25 Agosto 2019, 07:24 am
por EdePC
[Resuelto] [Pregunta]: ¿Es posible que me toqueteen la base de datos?
Desarrollo Web
Leguim 3 1,757 Último mensaje 26 Agosto 2019, 05:46 am
por MinusFour
[Resuelto] [Pregunta]: ¿Como puedo realizar esto? « 1 2 »
PHP
Leguim 10 5,650 Último mensaje 25 Abril 2020, 05:27 am
por sirefys
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines