Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/05/2013, 12:10
minombreesmm
 
Fecha de Ingreso: agosto-2012
Ubicacin: M.
Mensajes: 2.031
Antigedad: 11 aos, 8 meses
Puntos: 52
Como limpiar bien lo que recibo por post?

hasta ahorita tengo esta funcion


y lo que pongo para probar es esto...

Cdigo PHP:
Ver original
  1. function cleanString($string){
  2.     $string=trim($string);    
  3.     $string=htmlspecialchars($string);
  4.     //$string=htmlentities($string);
  5.     //$string=htmlentities($string, ENT_QUOTES,"UTF-8");
  6.     $string=nl2br($string);
  7.     return $string;    
  8. }

esa forma me gusto por que puedo insertar codigo html y lo muestra tal y cual se inserta sin alterar nada. uso codificacion utf8 osea se envian los datos como el usuario los escribe y si escribe algo de html se guardan los datos de una manera y se visualizan de la forma que el usuario los escribio. hasta alli todo bien
pero quise probar poniendo esto.. y nisiquiera logran insertar.
creen que hace falta algo en mi funcion de tal manera que no altere lo que ya eh logrado.
el codigo es este.
Cdigo raro:
Ver original
  1. spacer.gifstLdd`dh`€Ÿ,Œ ZD€d˜˜\PKvh + PK    R< $ src.1231175687546.png.autoresize.png}XeT…
  2. V`@!D‰!†.BRRn‘”.…‡
  3. rJ(zЦ[(<aTŽ›J/!8# ”yRœ9…‡
  4. ›˜—Z$r9hšen™n†~$4
  5. €b‹jTd;•'t}Я[6‡4۵6 @‚+h…‡ i׵–aR‰73:F
  6. 0š‘;#8{ѴˆIt–šoF{pkj2TR|R…‡
  7. {CZa‰+& E Nj Zj[?F6*j‰%'b+…‡ MN  8ƒ#y‡’
  8. 0 šʻkœ̯J+ %`;L[›HLŽ
  9. ‡O‰
  10. Š")4,>2Ÿj_˜j_+k&?™mʩ$…‡
  11. y”Y[v?=|=7, 'r]–Á>    c…‡ eD˜s;71_LЁO-hpԮ#Xj#P…‡ š*›y;ž+~ )4S
  12. iE7lžvb];z;
  13. g ‘˜o„–q €‡`j,L{~ҳ'Uٻ0Av'm7šܶs…‡
  14. "
  15. &u“'._˜F1y!gxǮFt‡4o…‡ KFGo†]R
  16. Œ(†‹+žg; B‹tYL–ľW—e%…‡
  17. 5ce‹WIlKۿ!ը3?HZDk@(G-C…‡
  18. d'ee*m9dJj/hAb0{œ.@*i'}…‡
  19. ٫*–U‘   k*HM•!†™wqa"…‡ otfŽ}‘” w#j’=tVABYN0…‡
  20. eJc’eBWBfZ[*v…o=}:á'‰…‡
  21. ^_Ÿ8STœ.nrd{uŒ†^“…‡
  22. –IwiKZ,zhΫŒ*€6 GL…"Cf]f’q}F‰$4"8t
  23. Ql†K
  24. 'j/›+^NX. ˆ4V'Š=kzb”…‡
  25. ;R:/B=fjr   &ƒ‹d~1Pgv…‡ JQ‹‚œJgMqE;$n#1J—V—›|TB„‹…‡
  26. ?FˆˆR%„4o” }ƒša#OΩƒ{FœO%hE1W8ž-M4™Ž…‡ [€Ÿ2E„Y^VQ)BxI>;a]›–2…‡
  27. …j›gn? ‹& ƒ"T`WN;$ kLN{nC^߽U7aS!:uj(G…‡
  28. Ÿ2j?q
  29. w“s]{82z;1*OCkf8Œi…‡ ŒP'`9Ot,h—™96&f+}u5-  boo>—l½I3X8f#™‹hx *XCLK<^
  30. &ydv
  31. w>w O
  32. }}(1rZ*™͝H3uyA>>=1…‡ &ˆ   A”)qF’UJfYAW!/è‘i|…‡
  33. >–ޥ0S@,@ ’‹”(n€*c‰y

lo que se que es es el apostrofe. '
entonces lo que me queda es averiguar como filtrar el apostrofe

de antemano gracias


reedito.
aadi esto a la funcion cleanString

Cdigo PHP:
Ver original
  1. $string=str_replace("'","\'",$string);

ahora si agarra el apostrofe,
pero ahora como scapo la \


intente hacer esto

Cdigo php erroneo:
Ver original
  1. $string=str_replace("\","",$string);

pero no escapa ni para su sintaxys correcta.. osea no se puede hacer esto

echo "\";
como solucionarlo, seria lo unico me imagino


finalmente lo logre con este truco..

Cdigo PHP:
Ver original
  1. function cleanString($string){
  2.  
  3.     $string=trim($string);    
  4.  
  5.     $string=htmlspecialchars($string);
  6.    
  7.  
  8.     //$string=htmlentities($string);
  9.  
  10.     //$string=htmlentities($string, ENT_QUOTES,"UTF-8");
  11.  
  12.     //$string=htmlentities($string, ENT_QUOTES,"iso-8859-1");
  13.  
  14.     $string=nl2br($string);
  15.    
  16.  
  17.     $diag= "\'";
  18.     $diag=str_replace("'","",$diag);
  19.    
  20.     $string=str_replace($diag,"",$string);
  21.    
  22.     $string=str_replace("'","\'",$string);
  23.  
  24.     return $string;
  25.  
  26. }

no se si sea buena idea hacerlo pero funciona

no es probable que alguien use diagonales y apostrofes pero si a alguien se le ocurre...


y por cierto del 1 al 10 que tan vulnerable es mi sitio con esa validacion?

y que mejoras podria darle

REVIELVO A REEDITAR.
solo me funciono para la apostrofe pero para la diagonal invertida no la agarra
__________________
a veces creemos que es algo bsico pero al profundizar nos damos cuenta que estbamos tocando solo la cola de la culebra

ltima edicin por minombreesmm; 19/05/2013 a las 13:06