freimanisg Posted January 22, 2011 Report Share Posted January 22, 2011 (edited) Gribētos zināt, kā tiek galā ar PHP un HTML koda sintaktisko simbolu aizstāšanu? Piemēram, ja kāds lietotājs ievada laukā: " <td>Ruksis tu tāds!</td> ", tad es vēlētos, lai šis "pseidokods" saglabātos kā teksts un arī tiek izvadīts kā teksts, kas nenostrādā. Šķiet, bija kaut kāda funkcija, taču nevaru atrast, laikam rokas par īsām... :( Un jā, protams, ar šo es vēlētos arī nodrošināties pret to, lai netiktu ievadīti (un palaisti) kaut kādi kaitnieciski skripti-trojāņi... Edited January 22, 2011 by freimanisg Quote Link to comment Share on other sites More sharing options...
101111 Posted January 23, 2011 Report Share Posted January 23, 2011 (edited) Pie šī teksta izvades lieto htmlspecialchars() vai htmlentities(). Nojaušu ka tas ir tas ko tu biji domājis. Cits variants ir pie teksta saglabāšanas izgriezt ārā html tagus ar strip_tags(), bet ne vienmēr tas ir piemērots. Skaties pats kā tev labāk patīk. Edited January 23, 2011 by 101111 Quote Link to comment Share on other sites More sharing options...
nikidijs Posted January 23, 2011 Report Share Posted January 23, 2011 Nuja, saglabā kā glabāji, bet pie izvades 101111 minētais, vai arī cits, sliktāks variants, kā es gudrīts to dariju. $izvadamais_teksts="<td>"; $izvadamais_teksts=str_replace("<","<",$izvadamais_teksts); $izvadamais_texsts=str_replace(">",">",$izvadamais_teksts); echo $izvadamais_teksts; Quote Link to comment Share on other sites More sharing options...
daGrevis Posted January 23, 2011 Report Share Posted January 23, 2011 Viens no augstākminētajiem. Pieņemsim ka šis ir ļauns kods... JS... <script type="text/javascript"> alert( 'XSS!' ); </script> Ar doto fn un skatotes saņemto HTML (View Source)... <script type="text/javascript"> alert( "XSS!" ); </script> Visi "ļaunie" simboli ir aizstāti. Kods neizpildās, bet parādās tā, kā tika rakstīts. Ir vēls, ko murgoju, bet ceri, ka saprati. =] Quote Link to comment Share on other sites More sharing options...
freimanisg Posted January 23, 2011 Author Report Share Posted January 23, 2011 Pie šī teksta izvades lieto htmlspecialchars() vai htmlentities(). Nojaušu ka tas ir tas ko tu biji domājis. Cits variants ir pie teksta saglabāšanas izgriezt ārā html tagus ar strip_tags(), bet ne vienmēr tas ir piemērots. Skaties pats kā tev labāk patīk. Paldies, šitas laikam būs īstais! Quote Link to comment Share on other sites More sharing options...
KarlisBa Posted January 23, 2011 Report Share Posted January 23, 2011 Ja lieto MySQL datubāzi, tad pats ērtākais veidots ir pie pašas datu ievades, ievadāmos datus eskeipot lietojot jau gatavo funkciju mysql_real_escape_string, un pēc tam izvadot datus tos attēlot caur funkcijām htmlspecialchars(stripslashes($a)). Protams, es būdams slinks pēc dabas esmu sev sarakstījis klases, ka šo visu veic manā vietā pie insertēšanas un datu attēlošanas, jo cilvēcība dažreiz liek aizmirst kaut kur piemest kādu eskeiptu, un tad gan var sanākt zili brīnumi. :) Quote Link to comment Share on other sites More sharing options...
mad182 Posted January 24, 2011 Report Share Posted January 24, 2011 Principā jau stripslashes pie izvades no db nav vajadzīgs, ja tur viss ir pareizi. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.